fix(gen): 值语义聚合槽豁免改为类型级判定,去掉易漏判的槽身份比较

This commit is contained in:
TermiNexus committed 2026-10-12 16:56:03 +08:00
1 parent 7c11c589f7
commit d7a5f7e68b
1 file changed
+1 -2
+1 -2
View File
@@ -486,8 +486,7 @@ novirtual class ExprGenBase:
if nm is None or trans is None: return None
ve: GenTypes.VarEntry* = self.Gen.VarGen.lookup_var_entry(trans.SymTab, nm)
if ve is None or ve.Alloca is None or ve.Spec is None: return None
# 必须是槽本身(若已被加载成指针值,说明源本来就是个指针,不豁免)。
if ve.Alloca is not val: return None
# 值语义槽:按名解析到该变量的值类型;此处仅做类型级判定(不依赖槽身份,避免别名/重复登记漏判)。
# 声明的就是 T*(PtrLevel>=1):真指针,必须显式解引用。
if ve.Spec.PtrLevel != 0: return None
if self.is_ptr_type(ve.Alloca.Ty) == 0: return None