diff --git a/lib/core/Handles/HandlesAssign.py b/lib/core/Handles/HandlesAssign.py index 6047f64..96953cc 100644 --- a/lib/core/Handles/HandlesAssign.py +++ b/lib/core/Handles/HandlesAssign.py @@ -1488,7 +1488,9 @@ class AssignHandle(BaseHandle): # 应升级为 common 定义(多模块同名合并为零值,对齐 None 语义), # 而非静默跳过。 existing_gv = Gen.module.globals.get(VarName) if VarName in Gen.module.globals else None - if isinstance(existing_gv, ir.GlobalVariable) and getattr(existing_gv, 'is_declaration', False): + # 注:llvmlite.ir.GlobalVariable 无 is_declaration 属性(binding 层才有), + # 声明/定义靠 initializer 区分:external 声明 initializer 恒为 None。 + if isinstance(existing_gv, ir.GlobalVariable) and getattr(existing_gv, 'initializer', None) is None: try: existing_gv.linkage = 'common' if Node.value is None or (isinstance(Node.value, ast.Constant) and Node.value.value is None):