浏览代码

Override tcallnode.pass_1 for use of got for cdecl'ared functions (assuming it can be PIC code)

git-svn-id: trunk@21797 -
pierre 13 年之前
父节点
当前提交
56b4977858
共有 1 个文件被更改,包括 12 次插入2 次删除
  1. 12 2
      compiler/mips/ncpucall.pas

+ 12 - 2
compiler/mips/ncpucall.pas

@@ -26,10 +26,11 @@ unit ncpucall;
 interface
 
 uses
-  ncgcal;
+  node, ncgcal;
 
 type
   tMIPSELcallnode = class(tcgcallnode)
+    function  pass_1 : tnode; override;
     procedure extra_call_code; override;
     procedure extra_post_call_code; override;
   end;
@@ -38,11 +39,20 @@ type
 implementation
 
 uses
-  cpubase,
+  globtype,cpubase,procinfo,
   aasmtai,aasmcpu,aasmdata,
   paramgr,
   ncal;
 
+function TMIPSELcallnode.pass_1 : tnode;
+begin
+  pass_1 := inherited pass_1;
+  if assigned(current_procinfo) and
+     assigned(procdefinition) and
+	 (procdefinition.proccalloption=pocall_cdecl) then
+	include(current_procinfo.flags,pi_needs_got);
+end;
+
 procedure tMIPSELcallnode.extra_call_code;
 begin
   { MIPS functions should never modify the stack pointer