From a269366ac51efdbf99bff6a17938d346d29c981d Mon Sep 17 00:00:00 2001 From: Lixuanwang Date: Mon, 4 Aug 2025 02:31:18 +0800 Subject: [PATCH] =?UTF-8?q?[backend]=E4=BF=AE=E5=A4=8D=E4=BA=86=E8=BE=83?= =?UTF-8?q?=E5=B0=8F=E5=85=A8=E9=9B=B6=E5=85=A8=E5=B1=80=E6=95=B0=E7=BB=84?= =?UTF-8?q?=E6=9C=AA=E6=98=BE=E7=A4=BA=E5=88=9D=E5=A7=8B=E5=8C=96=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E6=9C=AA=E5=AE=9A=E4=B9=89=E8=A1=8C=E4=B8=BA=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/RISCv64/RISCv64Backend.cpp | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/backend/RISCv64/RISCv64Backend.cpp b/src/backend/RISCv64/RISCv64Backend.cpp index e45248f..7e08102 100644 --- a/src/backend/RISCv64/RISCv64Backend.cpp +++ b/src/backend/RISCv64/RISCv64Backend.cpp @@ -139,7 +139,29 @@ std::string RISCv64CodeGen::module_gen() { ss << ".type " << global->getName() << ", @object\n"; ss << ".size " << global->getName() << ", " << total_size << "\n"; ss << global->getName() << ":\n"; - printInitializer(ss, global->getInitValues()); + bool is_all_zeros = true; + const auto& init_values = global->getInitValues(); + if (init_values.getValues().empty()) { + is_all_zeros = true; + } else { + for (auto val : init_values.getValues()) { + if (auto const_val = dynamic_cast(val)) { + if (!const_val->isZero()) { + is_all_zeros = false; + break; + } + } else { + is_all_zeros = false; + break; + } + } + } + if (is_all_zeros) { + ss << " .zero " << total_size << "\n"; + } else { + // 对于有非零初始值的变量,保持原有的打印逻辑。 + printInitializer(ss, global->getInitValues()); + } } // b. 处理全局常量 (ConstantVariable)