Sfoglia il codice sorgente

+ thlcgllvm.gen_load_uninitialized_function_result

git-svn-id: trunk@30670 -
Jonas Maebe 10 anni fa
parent
commit
ff3061a7cf
1 ha cambiato i file con 16 aggiunte e 1 eliminazioni
  1. 16 1
      compiler/llvm/hlcgllvm.pas

+ 16 - 1
compiler/llvm/hlcgllvm.pas

@@ -87,7 +87,9 @@ uses
       procedure gen_proc_symbol_end(list: TAsmList); override;
       procedure g_proc_entry(list : TAsmList;localsize : longint;nostackframe:boolean); override;
       procedure g_proc_exit(list : TAsmList;parasize:longint;nostackframe:boolean); override;
-
+     protected
+      procedure gen_load_uninitialized_function_result(list: TAsmList; pd: tprocdef; resdef: tdef; const resloc: tcgpara); override;
+     public
       procedure g_overflowcheck(list: TAsmList; const Loc: tlocation; def: tdef); override;
       procedure g_overflowCheck_loc(List:TAsmList;const Loc:TLocation;def:TDef;var ovloc : tlocation); override;
 
@@ -1092,6 +1094,19 @@ implementation
     end;
 
 
+  procedure thlcgllvm.gen_load_uninitialized_function_result(list: TAsmList; pd: tprocdef; resdef: tdef; const resloc: tcgpara);
+    var
+      reg: tregister;
+    begin
+      if not paramanager.ret_in_param(resdef,pd) then
+        begin
+          reg:=getregisterfordef(list,resdef);
+          list.concat(taillvm.op_reg_size_undef(la_bitcast,reg,resdef));
+          a_load_reg_cgpara(list,resdef,reg,resloc);
+        end;
+    end;
+
+
   procedure thlcgllvm.g_overflowcheck(list: TAsmList; const Loc: tlocation; def: tdef);
     begin
       { not possible, need ovloc }