summaryrefslogtreecommitdiff
path: root/compiler/parabase.pas
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/parabase.pas')
-rw-r--r--compiler/parabase.pas13
1 files changed, 11 insertions, 2 deletions
diff --git a/compiler/parabase.pas b/compiler/parabase.pas
index b829301e8d..0ec2e7fbd5 100644
--- a/compiler/parabase.pas
+++ b/compiler/parabase.pas
@@ -73,18 +73,20 @@ unit parabase;
end;
TCGPara = object
+ Def : tdef; { Type of the parameter }
Location : PCGParalocation;
IntSize : tcgint; { size of the total location in bytes }
+ DefDeref : tderef;
Alignment : ShortInt;
Size : TCGSize; { Size of the parameter included in all locations }
- Def : tdef; { Type of the parameter }
- DefDeref : tderef;
+ Temporary : boolean; { created on the fly, no permanent references exist to this somewhere that will cause it to be disposed }
{$ifdef powerpc}
composite: boolean; { under the AIX abi, how certain parameters are passed depends on whether they are composite or not }
{$endif powerpc}
constructor init;
destructor done;
procedure reset;
+ procedure resetiftemp; { reset if Temporary }
function getcopy:tcgpara;
procedure check_simple_location;
function add_location:pcgparalocation;
@@ -132,6 +134,7 @@ implementation
intsize:=0;
location:=nil;
def:=nil;
+ temporary:=false;
{$ifdef powerpc}
composite:=false;
{$endif powerpc}
@@ -162,6 +165,12 @@ implementation
{$endif powerpc}
end;
+ procedure TCGPara.resetiftemp;
+ begin
+ if temporary then
+ reset;
+ end;
+
function tcgpara.getcopy:tcgpara;
var