From febb9e4ac239a15ad8c46575643b53ca66e3f4ac Mon Sep 17 00:00:00 2001 From: _ov4 Date: Wed, 14 Oct 2026 03:36:21 +0000 Subject: feat(codegen): support C scalar arithmetic and input output Co-Authored-By: Claude Fable 5.1 --- include/cps/CodeGen.h | 3 +++ include/cps/TypeSystem.h | 2 ++ 2 files changed, 5 insertions(+) (limited to 'include') diff --git a/include/cps/CodeGen.h b/include/cps/CodeGen.h index 5043417..4363126 100644 --- a/include/cps/CodeGen.h +++ b/include/cps/CodeGen.h @@ -70,6 +70,9 @@ class CodeGen { llvm::Value *convertNumericValue(llvm::Value *Val, const TypeInfo *Source, const TypeInfo *Target); llvm::Value *emitCast(CastExprAST *Cast); + llvm::Value *emitCBinaryOp(BinaryExprAST *Bin, const TypeInfo *Left, const TypeInfo *Right); + void emitCOutput(llvm::Value *Val, const TypeInfo *Info, bool AppendNewline); + void emitCInput(const SymbolInfo *Symbol, const TypeInfo *Info); // TYPE-system helpers (Designator.cc). void runTypePrePass(const std::vector> &Statements); diff --git a/include/cps/TypeSystem.h b/include/cps/TypeSystem.h index 20c485f..a07c75f 100644 --- a/include/cps/TypeSystem.h +++ b/include/cps/TypeSystem.h @@ -141,6 +141,8 @@ public: std::string &Err); const TypeInfo *importCType(const std::string &Expression, std::string &Err); bool sameType(const std::string &Left, const std::string &Right) const; + const TypeInfo *promoteCScalar(const TypeInfo *Info) const; + const TypeInfo *commonCScalar(const TypeInfo *Left, const TypeInfo *Right) const; const EnumConstant *lookupEnumConstant(const std::string &Name) const; -- cgit v1.3.1-4-g156e