[Bug tree-optimization/64434] [5 Regression] Performance regression after operand canonicalization (r216728).

hjl.tools at gmail dot com gcc-bugzilla@gcc.gnu.org
Mon Dec 29 17:01:00 GMT 2014


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64434

H.J. Lu <hjl.tools at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[5 Regression] Performance  |[5 Regression] Performance
                   |regression after operand    |regression after operand
                   |cannibalization (r216728).  |canonicalization (r216728).

--- Comment #9 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Yuri Rumyantsev from comment #8)
> The issue is caused by operand canonicalization, i.e. there is special
> operand odering for commutative operations to have the same
> representation for  a + b and b + a. If computation of second operand
> requires more operations this may lead to live range increasing ( for
> live variables computed by first operand). If we swap these operands
> we get live range shrinking which is essential for 32-bit targets
> having only few registers.
> 

Are there any benefits for operand canonicalization for x86-64? Testcases
in r216728 seems to indicate that it is a good thing to do.  There may be
a case where operand canonicalization even wins for x86.



More information about the Gcc-bugs mailing list