|
@@ -346,7 +346,7 @@ unit cgobj;
|
|
|
|
|
|
{ comparison operations }
|
|
|
procedure a_cmp_const_reg_label(list : TAsmList;size : tcgsize;cmp_op : topcmp;a : aint;reg : tregister;
|
|
|
- l : tasmlabel);virtual; abstract;
|
|
|
+ l : tasmlabel); virtual;
|
|
|
procedure a_cmp_const_ref_label(list : TAsmList;size : tcgsize;cmp_op : topcmp;a : aint;const ref : treference;
|
|
|
l : tasmlabel); virtual;
|
|
|
procedure a_cmp_const_loc_label(list: TAsmList; size: tcgsize;cmp_op: topcmp; a: aint; const loc: tlocation;
|
|
@@ -3053,12 +3053,21 @@ implementation
|
|
|
end;
|
|
|
|
|
|
|
|
|
- procedure tcg.a_cmp_const_ref_label(list : TAsmList;size : tcgsize;cmp_op : topcmp;a : aint;const ref : treference;
|
|
|
- l : tasmlabel);
|
|
|
-
|
|
|
+ procedure tcg.a_cmp_const_reg_label(list: TAsmList; size: tcgsize;
|
|
|
+ cmp_op: topcmp; a: aint; reg: tregister; l: tasmlabel);
|
|
|
var
|
|
|
tmpreg: tregister;
|
|
|
+ begin
|
|
|
+ tmpreg:=getintregister(list,size);
|
|
|
+ a_load_const_reg(list,size,a,tmpreg);
|
|
|
+ a_cmp_reg_reg_label(list,size,cmp_op,tmpreg,reg,l);
|
|
|
+ end;
|
|
|
|
|
|
+
|
|
|
+ procedure tcg.a_cmp_const_ref_label(list : TAsmList;size : tcgsize;cmp_op : topcmp;a : aint;const ref : treference;
|
|
|
+ l : tasmlabel);
|
|
|
+ var
|
|
|
+ tmpreg: tregister;
|
|
|
begin
|
|
|
tmpreg:=getintregister(list,size);
|
|
|
a_load_ref_reg(list,size,size,ref,tmpreg);
|
|
@@ -3068,10 +3077,8 @@ implementation
|
|
|
|
|
|
procedure tcg.a_cmp_const_loc_label(list : TAsmList;size : tcgsize;cmp_op : topcmp;a : aint;const loc : tlocation;
|
|
|
l : tasmlabel);
|
|
|
-
|
|
|
var
|
|
|
tmpreg : tregister;
|
|
|
-
|
|
|
begin
|
|
|
case loc.loc of
|
|
|
LOC_REGISTER,LOC_CREGISTER:
|