diff options
| author | _ov4 <ov4@ov4.org> | 2026-07-26 17:13:15 +0000 |
|---|---|---|
| committer | _ov4 <ov4@ov4.org> | 2026-07-26 17:13:15 +0000 |
| commit | 0fef2986daa2945c9e3d050c0f750d56792b30bd (patch) | |
| tree | 4db469725cc64bb0c45978951e071dacaf58a687 /include/cps/CodeGen.h | |
| parent | 344206d57e834b2394cbe2ec0df50b04a8b3c171 (diff) | |
refactor: groundwork for TYPE — sizeof constants, string guard, array scoping
- Element sizes now flow as target-folded null-GEP sizeof constants
(TypeSystem::getSizeOfConstant); the module has no DataLayout string,
so host-side size math would diverge from the backend on padded structs.
- Extract the triplicated STRING null->"" select into
CodeGen::emitStringNullGuard.
- Scope ArrayTable per function via ArrayHandler::exchangeTable, mirroring
the Symbols save/clear/restore discipline.
- Promote checked element addressing to public
ArrayHandler::emitElementAddress for the upcoming lvalue layer.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Diffstat (limited to 'include/cps/CodeGen.h')
| -rw-r--r-- | include/cps/CodeGen.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/cps/CodeGen.h b/include/cps/CodeGen.h index 43d3a32..2451cbd 100644 --- a/include/cps/CodeGen.h +++ b/include/cps/CodeGen.h @@ -87,6 +87,9 @@ public: llvm::Value *emitExpr(ExprAST *Expr); void emitStmt(StmtAST *Stmt); + // STRING slots zero-init to null; normalize null to "" at load/print sites. + llvm::Value *emitStringNullGuard(llvm::Value *StrVal); + const TypeInfo *resolveType(const std::string &TypeName) const; llvm::Type *getLLVMType(const std::string &TypeName) const; llvm::Value *getNamedValue(const std::string &Name) const; |
