diff options
author | florian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2019-10-30 20:07:27 +0000 |
---|---|---|
committer | florian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2019-10-30 20:07:27 +0000 |
commit | bad1ebce0506a50fe06bfc261cfa034071cf9929 (patch) | |
tree | 21ac293bde640b2a3106d9929db34c439f78bd07 /compiler/aoptbase.pas | |
parent | 663f37ff8caa8015e7616d1bc49c78fae74034da (diff) | |
download | fpc-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.pas | 14 |
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 *************************** } |