|
@@ -262,6 +262,7 @@ interface
|
|
{$ifdef cpuextended}
|
|
{$ifdef cpuextended}
|
|
,top_extended80
|
|
,top_extended80
|
|
{$endif cpuextended}
|
|
{$endif cpuextended}
|
|
|
|
+ ,top_tai
|
|
,top_def
|
|
,top_def
|
|
,top_fpcond
|
|
,top_fpcond
|
|
,top_cond
|
|
,top_cond
|
|
@@ -283,49 +284,6 @@ interface
|
|
end;
|
|
end;
|
|
plocaloper = ^tlocaloper;
|
|
plocaloper = ^tlocaloper;
|
|
|
|
|
|
- { please keep the size of this record <=12 bytes and keep it properly aligned }
|
|
|
|
- toper = record
|
|
|
|
- ot : longint;
|
|
|
|
- case typ : toptype of
|
|
|
|
- top_none : ();
|
|
|
|
- top_reg : (reg:tregister);
|
|
|
|
- top_ref : (ref:preference);
|
|
|
|
- top_const : (val:tcgint);
|
|
|
|
- top_bool : (b:boolean);
|
|
|
|
- { local varsym that will be inserted in pass_generate_code }
|
|
|
|
- top_local : (localoper:plocaloper);
|
|
|
|
- {$ifdef arm}
|
|
|
|
- top_regset : (regset:^tcpuregisterset; regtyp: tregistertype; subreg: tsubregister; usermode: boolean);
|
|
|
|
- top_conditioncode : (cc : TAsmCond);
|
|
|
|
- top_modeflags : (modeflags : tcpumodeflags);
|
|
|
|
- top_specialreg : (specialreg:tregister; specialflags:tspecialregflags);
|
|
|
|
- {$endif arm}
|
|
|
|
- {$if defined(arm) or defined(aarch64)}
|
|
|
|
- top_shifterop : (shifterop : pshifterop);
|
|
|
|
- {$endif defined(arm) or defined(aarch64)}
|
|
|
|
- {$ifdef m68k}
|
|
|
|
- top_regset : (dataregset,addrregset:^tcpuregisterset);
|
|
|
|
- {$endif m68k}
|
|
|
|
- {$ifdef jvm}
|
|
|
|
- top_single : (sval:single);
|
|
|
|
- top_double : (dval:double);
|
|
|
|
- top_string : (pcvallen: aint; pcval: pchar);
|
|
|
|
- top_wstring : (pwstrval: pcompilerwidestring);
|
|
|
|
- {$endif jvm}
|
|
|
|
- {$ifdef llvm}
|
|
|
|
- top_single : (sval:single);
|
|
|
|
- top_double : (dval:double);
|
|
|
|
- {$ifdef cpuextended}
|
|
|
|
- top_extended80 : (eval:extended);
|
|
|
|
- {$endif cpuextended}
|
|
|
|
- top_def : (def: tdef);
|
|
|
|
- top_cond : (cond: topcmp);
|
|
|
|
- top_fpcond : (fpcond: tllvmfpcmp);
|
|
|
|
- top_para : (paras: tfplist);
|
|
|
|
- {$endif llvm}
|
|
|
|
- end;
|
|
|
|
- poper=^toper;
|
|
|
|
-
|
|
|
|
const
|
|
const
|
|
{ ait_* types which don't result in executable code or which don't influence
|
|
{ ait_* types which don't result in executable code or which don't influence
|
|
the way the program runs/behaves, but which may be encountered by the
|
|
the way the program runs/behaves, but which may be encountered by the
|
|
@@ -438,6 +396,52 @@ interface
|
|
);
|
|
);
|
|
|
|
|
|
type
|
|
type
|
|
|
|
+ tai = class;
|
|
|
|
+
|
|
|
|
+ { please keep the size of this record <=12 bytes and keep it properly aligned }
|
|
|
|
+ toper = record
|
|
|
|
+ ot : longint;
|
|
|
|
+ case typ : toptype of
|
|
|
|
+ top_none : ();
|
|
|
|
+ top_reg : (reg:tregister);
|
|
|
|
+ top_ref : (ref:preference);
|
|
|
|
+ top_const : (val:tcgint);
|
|
|
|
+ top_bool : (b:boolean);
|
|
|
|
+ { local varsym that will be inserted in pass_generate_code }
|
|
|
|
+ top_local : (localoper:plocaloper);
|
|
|
|
+ {$ifdef arm}
|
|
|
|
+ top_regset : (regset:^tcpuregisterset; regtyp: tregistertype; subreg: tsubregister; usermode: boolean);
|
|
|
|
+ top_conditioncode : (cc : TAsmCond);
|
|
|
|
+ top_modeflags : (modeflags : tcpumodeflags);
|
|
|
|
+ top_specialreg : (specialreg:tregister; specialflags:tspecialregflags);
|
|
|
|
+ {$endif arm}
|
|
|
|
+ {$if defined(arm) or defined(aarch64)}
|
|
|
|
+ top_shifterop : (shifterop : pshifterop);
|
|
|
|
+ {$endif defined(arm) or defined(aarch64)}
|
|
|
|
+ {$ifdef m68k}
|
|
|
|
+ top_regset : (dataregset,addrregset:^tcpuregisterset);
|
|
|
|
+ {$endif m68k}
|
|
|
|
+ {$ifdef jvm}
|
|
|
|
+ top_single : (sval:single);
|
|
|
|
+ top_double : (dval:double);
|
|
|
|
+ top_string : (pcvallen: aint; pcval: pchar);
|
|
|
|
+ top_wstring : (pwstrval: pcompilerwidestring);
|
|
|
|
+ {$endif jvm}
|
|
|
|
+ {$ifdef llvm}
|
|
|
|
+ top_single : (sval:single);
|
|
|
|
+ top_double : (dval:double);
|
|
|
|
+ {$ifdef cpuextended}
|
|
|
|
+ top_extended80 : (eval:extended);
|
|
|
|
+ {$endif cpuextended}
|
|
|
|
+ top_tai : (ai: tai);
|
|
|
|
+ top_def : (def: tdef);
|
|
|
|
+ top_cond : (cond: topcmp);
|
|
|
|
+ top_fpcond : (fpcond: tllvmfpcmp);
|
|
|
|
+ top_para : (paras: tfplist);
|
|
|
|
+ {$endif llvm}
|
|
|
|
+ end;
|
|
|
|
+ poper=^toper;
|
|
|
|
+
|
|
{ abstract assembler item }
|
|
{ abstract assembler item }
|
|
tai = class(TLinkedListItem)
|
|
tai = class(TLinkedListItem)
|
|
{$ifndef NOOPT}
|
|
{$ifndef NOOPT}
|
|
@@ -2807,6 +2811,8 @@ implementation
|
|
{$ifdef llvm}
|
|
{$ifdef llvm}
|
|
top_para:
|
|
top_para:
|
|
paras.free;
|
|
paras.free;
|
|
|
|
+ top_tai:
|
|
|
|
+ ai.free;
|
|
{$endif llvm}
|
|
{$endif llvm}
|
|
end;
|
|
end;
|
|
typ:=top_none;
|
|
typ:=top_none;
|