mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-20 09:29:26 +02:00
* turning on peephole optimizations no longer turns on cse as well
* -O3 again performs multiple cse passes git-svn-id: trunk@3915 -
This commit is contained in:
parent
df973fa1de
commit
fc3fb54f7c
@ -46,7 +46,7 @@ Var
|
|||||||
pass: longint;
|
pass: longint;
|
||||||
slowopt, changed, lastLoop: boolean;
|
slowopt, changed, lastLoop: boolean;
|
||||||
Begin
|
Begin
|
||||||
slowopt := (cs_opt_asmcse in aktoptimizerswitches);
|
slowopt := (cs_opt_level3 in aktoptimizerswitches);
|
||||||
pass := 0;
|
pass := 0;
|
||||||
changed := false;
|
changed := false;
|
||||||
dfa := TDFAObj.create(asml);
|
dfa := TDFAObj.create(asml);
|
||||||
@ -72,7 +72,7 @@ Begin
|
|||||||
if pass = 0 then
|
if pass = 0 then
|
||||||
PeepHoleOptPass1(AsmL, BlockStart, BlockEnd);
|
PeepHoleOptPass1(AsmL, BlockStart, BlockEnd);
|
||||||
{ Data flow analyzer }
|
{ Data flow analyzer }
|
||||||
If (cs_opt_peephole in aktoptimizerswitches) Then
|
If (cs_opt_asmcse in aktoptimizerswitches) Then
|
||||||
begin
|
begin
|
||||||
if dfa.pass_2 then
|
if dfa.pass_2 then
|
||||||
{ common subexpression elimination }
|
{ common subexpression elimination }
|
||||||
|
@ -2254,10 +2254,10 @@ end;
|
|||||||
|
|
||||||
function CSE(asml: TAsmList; First, Last: tai; pass: longint): boolean;
|
function CSE(asml: TAsmList; First, Last: tai; pass: longint): boolean;
|
||||||
begin
|
begin
|
||||||
doCSE(asml, First, Last, not(cs_opt_asmcse in aktoptimizerswitches) or (pass >= 2),
|
doCSE(asml, First, Last, not(cs_opt_level3 in aktoptimizerswitches) or (pass >= 2),
|
||||||
not(cs_opt_asmcse in aktoptimizerswitches) or (pass >= 1));
|
not(cs_opt_level3 in aktoptimizerswitches) or (pass >= 1));
|
||||||
{ register renaming }
|
{ register renaming }
|
||||||
if not(cs_opt_asmcse in aktoptimizerswitches) or (pass > 0) then
|
if not(cs_opt_level3 in aktoptimizerswitches) or (pass > 0) then
|
||||||
doRenaming(asml, first, last);
|
doRenaming(asml, first, last);
|
||||||
cse := removeInstructs(asml, first, last);
|
cse := removeInstructs(asml, first, last);
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user