Lab6: fix performance test freeze by only zero-initializing local variables with initializers

This commit is contained in:
2026-06-01 16:00:00 +08:00
committed by CGH0S7
parent 6f48016c10
commit 233c163271
2 changed files with 6 additions and 4 deletions

4
scripts/run_all_tests.sh Normal file → Executable file
View File

@@ -2,8 +2,8 @@
# 批量测试所有.sy文件的语法解析 # 批量测试所有.sy文件的语法解析
test_dir="/home/lingli/nudt-compiler-cpp/test/test_case" test_dir="$(pwd)/test/test_case"
compiler="/home/lingli/nudt-compiler-cpp/build/bin/compiler" compiler="$(pwd)/build/bin/compiler"
if [ ! -f "$compiler" ]; then if [ ! -f "$compiler" ]; then
echo "错误:编译器不存在,请先构建项目" echo "错误:编译器不存在,请先构建项目"

View File

@@ -208,8 +208,10 @@ std::any IRGenImpl::visitVarDef(SysYParser::VarDefContext* ctx) {
slot = module_.CreateGlobalValue(name, StorageType(ty), init); slot = module_.CreateGlobalValue(name, StorageType(ty), init);
} else { } else {
slot = builder_.CreateAlloca(StorageType(ty), name); slot = builder_.CreateAlloca(StorageType(ty), name);
if (ctx->initValue()) {
ZeroInitializeLocal(slot, ty); ZeroInitializeLocal(slot, ty);
if (ctx->initValue()) EmitLocalInitValue(slot, ty, ctx->initValue()); EmitLocalInitValue(slot, ty, ctx->initValue());
}
} }
storage_map_[ctx] = slot; storage_map_[ctx] = slot;