Browse Source

* fixed llvm compiler compilation after r38814 (crashes in "make cycle", but
that was already the case before)

git-svn-id: trunk@38815 -

Jonas Maebe 7 years ago
parent
commit
3da67019e5
1 changed files with 5 additions and 16 deletions
  1. 5 16
      compiler/llvm/tgllvm.pas

+ 5 - 16
compiler/llvm/tgllvm.pas

@@ -63,11 +63,9 @@ unit tgllvm;
         constructor create; override;
         destructor destroy; override;
         procedure setfirsttemp(l: asizeint); override;
-        function istemp(const ref: treference): boolean; override;
         procedure temp_to_ref(p: ptemprecord; out ref: treference); override;
         procedure getlocal(list: TAsmList; size: asizeint; alignment: shortint; def: tdef; var ref: treference); override;
         procedure gethltemp(list: TAsmList; def: tdef; forcesize: asizeint; temptype: ttemptype; out ref: treference); override;
-        procedure ungetiftemp(list: TAsmList; const ref: treference); override;
       end;
 
 
@@ -101,7 +99,7 @@ implementation
         tl^.def:=def;
         tl^.fini:=fini;
         tl^.alignment:=alignment;
-        tl^.pos:=getsupreg(ref.base);
+        tl^.pos:=getsupreg(reg);
         tl^.size:=size;
         tl^.next:=templist;
         tl^.nextfree:=nil;
@@ -138,17 +136,14 @@ implementation
       end;
 
 
-    function ttgllvm.istemp(const ref: treference): boolean;
-      begin
-        result:=getregtype(ref.base)=R_TEMPREGISTER;
-      end;
-
-
     procedure ttgllvm.temp_to_ref(p: ptemprecord; out ref: treference);
+      var
+        temppos: treftemppos;
       begin
         { on the LLVM target, every temp is independent and encoded via a
           separate temp register whose superregister number is stored in p^.pos }
-        reference_reset_base(ref,voidstackpointertype,newreg(R_TEMPREGISTER,p^.pos,R_SUBWHOLE),0,p^.alignment,[]);
+        temppos.val:=p^.pos;
+        reference_reset_base(ref,newreg(R_TEMPREGISTER,p^.pos,R_SUBWHOLE),0,temppos,p^.alignment,[]);
       end;
 
 
@@ -187,12 +182,6 @@ implementation
       end;
 
 
-    procedure ttgllvm.ungetiftemp(list: TAsmList; const ref: treference);
-      begin
-        if istemp(ref) then
-          FreeTemp(list,getsupreg(ref.base),[tt_normal]);
-      end;
-
 begin
   orgtgclass:=tgobjclass;
   tgobjclass:=ttgllvm;