From dfa396b06f866bfc90bd6ae2d5e2e2e20f07ca32 Mon Sep 17 00:00:00 2001 From: ladev789 Date: Mon, 31 Mar 2025 03:54:39 +0800 Subject: [PATCH] [lab2]now 01_add.ll generated by sysy can be compiled to executable by clang --- src/SysYIRGenerator.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/SysYIRGenerator.cpp b/src/SysYIRGenerator.cpp index 967ee0d..9077eee 100644 --- a/src/SysYIRGenerator.cpp +++ b/src/SysYIRGenerator.cpp @@ -136,7 +136,8 @@ std::any SysYIRGenerator::visitFuncDef(SysYParser::FuncDefContext* ctx) { irStream << " " << allocaName << " = alloca " << llvmType << ", align 4\n"; irStream << " store " << llvmType << " " << symbolTable[varName].first << ", " << llvmType << "* " << allocaName << ", align 4\n"; - + + symbolTable[varName] = {allocaName, llvmType}; } } ctx->blockStmt()->accept(this); @@ -175,7 +176,7 @@ std::any SysYIRGenerator::visitStmt(SysYParser::StmtContext* ctx) { throw std::runtime_error("Invalid float literal: " + rhs); } } - irStream << " store1 " << lhsType << " " << rhs << ", " << lhsType + irStream << " store " << lhsType << " " << rhs << ", " << lhsType << "* " << lhsAlloca << ", align 4\n"; } else if (ctx->RETURN()) { hasReturn = true;