http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23830
Jan Hubicka <hubicka at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |hubicka at gcc dot gnu.org
--- Comment #4 from Jan Hubicka <hubicka at gcc dot gnu.org> 2012-03-23
15:38:32 UTC ---
Inline predicates handle this case for both ipa-constant propagation and
inliner.
We will now work out that y-prec-x_prec and x_prec-y_prec will be constant and
that the conditionals will be decided at compile time.
We now inline ChangePrecision at -Os.
We however still won't get that y_prec>x_prec can be resolved at compile time.
Only tests comparing with constants.
BB 2 predicate:(true)
if (y_prec_2(D) > x_prec_3(D))
freq:1.00 size: 2 time: 2
Accounting size:2.00, time:2.00 on new predicate:(op2 changed
|| op1 changed)
BB 3 predicate:(true)
D.1717_4 = y_prec_2(D) - x_prec_3(D);
freq:0.39 size: 1 time: 1
Accounting size:1.00, time:0.39 on predicate:(op2 changed ||
op1 changed)
D.1716_6 = x_5(D) << D.1717_4;
freq:0.39 size: 1 time: 1
Accounting size:1.00, time:0.39 on new predicate:(op2 changed
|| op1 changed || op0 changed)
BB 4 predicate:(true)
if (y_prec_2(D) < x_prec_3(D))
freq:0.61 size: 2 time: 2
Accounting size:2.00, time:1.22 on predicate:(op2 changed ||
op1 changed)
BB 5 predicate:(true)
D.1720_7 = x_prec_3(D) - y_prec_2(D);
freq:0.37 size: 1 time: 1
Accounting size:1.00, time:0.37 on predicate:(op2 changed ||
op1 changed)
D.1716_8 = x_5(D) >> D.1720_7;
freq:0.37 size: 1 time: 1
Accounting size:1.00, time:0.37 on predicate:(op2 changed ||
op1 changed || op0 changed)
BB 6 predicate:(true)
return D.1716_1;
freq:1.00 size: 1 time: 2
Will be eliminated by inlining
Accounting size:1.00, time:2.00 on predicate:(not inlined)
....
Considering changePrecision.constprop.0 with 5 size
to be inlined into t in t.c:12
Estimated growth after inlined into all is -8 insns.
Estimated badness is -1073741827, frequency 1.00.
Badness calculation for t -> changePrecision.constprop.0
size growth -3, time growth -12
-1073741827: Growth -3 <= 0
Accounting size:2.00, time:0.76 on new predicate:(op0 changed)