fix(func): extern def 不再生成空函数体
stdio.printf 等 extern 声明此前被发射为 ret 0 的空 define,覆盖 C runtime 实现导致所有输出为空;现在只保留 declare。
This commit is contained in:
1 parent
d4fc66fe3c
commit
0beb8f5e55
1 file changed
+3
@@ -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)
|
||||
|
||||
Reference in new issue
Block a user