fix(func): extern def 不再生成空函数体

stdio.printf 等 extern 声明此前被发射为 ret 0 的空 define,覆盖 C runtime 实现导致所有输出为空;现在只保留 declare。
This commit is contained in:
TermiNexus committed 2026-10-18 22:37:21 +08:00
1 parent d4fc66fe3c
commit 0beb8f5e55
1 file changed
+3
+3
View File
@@ -1329,6 +1329,9 @@ class FunctionHandle(BaseHandle):
return old_func
def _EmitFunctionLlvm(self, Node: ast.FunctionDef, Gen: LlvmCodeGenerator, ClassName: str | None = None, extra_params: list[tuple[str, ir.Type]] | None = None) -> ir.Function | None:
if getattr(Node, 'Extern', False) or 'extern' in (getattr(Node, 'Markers', None) or ()):
# extern def 只有声明,不发射函数体(否则会生成空 define 覆盖 C runtime 实现)
return
if self._is_generic_function(Node):
return
FuncName, RawFuncName, func_meta = self._compute_func_name_meta(Node, ClassName)