* fixed llvm compiler compilation after r38814 (crashes in "make cycle", but

that was already the case before)

git-svn-id: trunk@38815 -
This commit is contained in:
Jonas Maebe 2018-04-22 20:40:19 +00:00
parent 4686f61002
commit 3da67019e5

View File

@ -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;