summaryrefslogtreecommitdiff
path: root/compiler/aoptbase.pas
diff options
context:
space:
mode:
authorflorian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2>2019-10-30 20:07:27 +0000
committerflorian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2>2019-10-30 20:07:27 +0000
commitbad1ebce0506a50fe06bfc261cfa034071cf9929 (patch)
tree21ac293bde640b2a3106d9929db34c439f78bd07 /compiler/aoptbase.pas
parent663f37ff8caa8015e7616d1bc49c78fae74034da (diff)
downloadfpc-bad1ebce0506a50fe06bfc261cfa034071cf9929.tar.gz
* optimize TAOptBase.SuperRegistersEqual
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@43337 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'compiler/aoptbase.pas')
-rw-r--r--compiler/aoptbase.pas14
1 files changed, 10 insertions, 4 deletions
diff --git a/compiler/aoptbase.pas b/compiler/aoptbase.pas
index fa33e9057f..2d0909fda6 100644
--- a/compiler/aoptbase.pas
+++ b/compiler/aoptbase.pas
@@ -104,7 +104,7 @@ unit aoptbase;
{ compares reg1 and reg2 having the same type and being the same super registers
so the register size is neglected }
- function SuperRegistersEqual(reg1,reg2 : TRegister) : Boolean;
+ function SuperRegistersEqual(reg1,reg2 : TRegister) : Boolean;{$ifdef USEINLINE}inline;{$endif}
end;
function labelCanBeSkipped(p: tai_label): boolean;
@@ -316,10 +316,16 @@ unit aoptbase;
end;
- function TAOptBase.SuperRegistersEqual(reg1,reg2 : TRegister) : Boolean;
+ function TAOptBase.SuperRegistersEqual(reg1,reg2 : TRegister) : Boolean;{$ifdef USEINLINE}inline;{$endif}
Begin
- Result:=(getregtype(reg1) = getregtype(reg2)) and
- (getsupreg(reg1) = getsupreg(Reg2));
+ { Do an optimized version of
+
+ Result:=(getregtype(reg1) = getregtype(reg2)) and
+ (getsupreg(reg1) = getsupreg(Reg2));
+
+ as SuperRegistersEqual is used a lot
+ }
+ Result:=(DWord(reg1) and $ff00ffff)=(DWord(reg2) and $ff00ffff);
end;
{ ******************* Processor dependent stuff *************************** }