mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-10 08:08:36 +02:00
* 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:
parent
4686f61002
commit
3da67019e5
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user