From a231267fc5d75d39389ee38072b5f84c7fa1f72e Mon Sep 17 00:00:00 2001 From: rain2133 <1370973498@qq.com> Date: Sat, 26 Jul 2025 13:02:24 +0800 Subject: [PATCH] =?UTF-8?q?[midend]=E4=BF=AE=E5=A4=8D=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E5=8F=82=E6=95=B0alloca=E6=8C=87=E4=BB=A4=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E5=AF=BC=E8=87=B4=E7=9A=84=E6=AE=B5=E9=94=99?= =?UTF-8?q?=E8=AF=AF=EF=BC=8C=E4=BF=AE=E5=A4=8Dirprint=E5=AF=B9argument?= =?UTF-8?q?=E7=9A=84=E8=AF=86=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/SysYIRGenerator.cpp | 2 +- src/SysYIRPrinter.cpp | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/SysYIRGenerator.cpp b/src/SysYIRGenerator.cpp index 0f3871c..1fb7305 100644 --- a/src/SysYIRGenerator.cpp +++ b/src/SysYIRGenerator.cpp @@ -408,7 +408,7 @@ std::any SysYIRGenerator::visitFuncDef(SysYParser::FuncDefContext *ctx){ auto funcArgs = function->getArguments(); std::vector allocas; for (int i = 0; i < paramActualTypes.size(); ++i) { - AllocaInst *alloca = builder.createAllocaInst(paramActualTypes[i], {}, paramNames[i]); + AllocaInst *alloca = builder.createAllocaInst(Type::getPointerType(paramActualTypes[i]), {}, paramNames[i]); allocas.push_back(alloca); module->addVariable(paramNames[i], alloca); } diff --git a/src/SysYIRPrinter.cpp b/src/SysYIRPrinter.cpp index 668ed84..50c56cf 100644 --- a/src/SysYIRPrinter.cpp +++ b/src/SysYIRPrinter.cpp @@ -72,6 +72,8 @@ std::string SysYPrinter::getValueName(Value *value) { return std::to_string(constVal->getInt()); } else if (auto constVar = dynamic_cast(value)) { return constVar->getName(); // 假设ConstantVariable有自己的名字或通过getByIndices获取值 + } else if (auto argVar = dynamic_cast(value)) { + return "%" + argVar->getName(); // 假设ArgumentVariable有自己的名字 } assert(false && "Unknown value type or unable to get value name"); return "";