[Bug tree-optimization/54245] [4.8 regression] incorrect optimisation
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Aug 13 17:20:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54245
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org,
| |wschmidt at gcc dot gnu.org
Target Milestone|--- |4.8.0
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-08-13 17:19:40 UTC ---
Confirmed. slsr replaces:
D.2219_3 = *row_2(D);
D.2220_4 = (int) D.2219_3;
a1_5 = D.2220_4 * 22725;
D.2222_6 = MEM[(short int *)row_2(D) + 4B];
D.2223_7 = (int) D.2222_6;
D.2224_8 = D.2223_7 * 21407;
a0_9 = D.2224_8 + a1_5;
D.2225_10 = D.2223_7 * 8867;
- a1_11 = a1_5 + D.2225_10;
+ slsr.4_25 = D.2222_6 * 12540;
+ slsr.5_26 = (int) slsr.4_25;
+ a1_11 = a0_9 - slsr.5_26;
The multiplication is newly performed in short int, supposedly that is the
problem here. Anyway, while the number of multiplications in the end is the
same, with slsr the code sequence is also 3 insns/4 bytes longer on x86_64.
More information about the Gcc-bugs
mailing list