From 63906d064812f42441a26b3038986735145c3902 Mon Sep 17 00:00:00 2001 From: rain2133 <1370973498@qq.com> Date: Tue, 29 Jul 2025 19:35:39 +0800 Subject: [PATCH] =?UTF-8?q?[midend]=E4=BF=AE=E5=A4=8D82=E6=A0=B7=E4=BE=8B?= =?UTF-8?q?=E7=94=9F=E6=88=90IR=E7=9A=84=E9=94=99=E8=AF=AF=EF=BC=88?= =?UTF-8?q?=E6=9C=AA=E6=AD=A3=E7=A1=AE=E5=88=9D=E5=A7=8B=E5=8C=96=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E6=95=B0=E7=BB=84=E5=B8=B8=E9=87=8F=E5=92=8C=E6=95=B0?= =?UTF-8?q?=E7=BB=84=E5=B8=B8=E9=87=8F=E7=9A=84Type=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/SysYIRGenerator.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/SysYIRGenerator.cpp b/src/SysYIRGenerator.cpp index 2fa2be8..b1430ff 100644 --- a/src/SysYIRGenerator.cpp +++ b/src/SysYIRGenerator.cpp @@ -94,7 +94,11 @@ std::any SysYIRGenerator::visitGlobalConstDecl(SysYParser::GlobalConstDeclContex Utils::tree2Array(type, root, dims, dims.size(), values, &builder); delete root; // 创建全局常量变量,并更新符号表 - module->createConstVar(name, Type::getPointerType(type), values, dims); + Type* variableType = type; + if (!dims.empty()) { // 如果有维度,说明是数组 + variableType = buildArrayType(type, dims); // 构建完整的 ArrayType + } + module->createConstVar(name, Type::getPointerType(variableType), values, dims); } return std::any(); } @@ -145,7 +149,12 @@ std::any SysYIRGenerator::visitConstDecl(SysYParser::ConstDeclContext *ctx){ Utils::tree2Array(type, root, dims, dims.size(), values, &builder); delete root; - module->createConstVar(name, Type::getPointerType(type), values, dims); + // 创建局部常量,并更新符号表 + Type* variableType = type; + if (!dims.empty()) { + variableType = buildArrayType(type, dims); // 构建完整的 ArrayType + } + module->createConstVar(name, Type::getPointerType(variableType), values, dims); } return 0; }