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

Rainer Orth <ro at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Target|sparc-sun-solaris2.11       |sparc-sun-solaris2.1[01]
                 CC|                            |rsandifo at gcc dot gnu.org
               Host|sparc-sun-solaris2.11       |sparc-sun-solaris2.1[01]
              Build|sparc-sun-solaris2.11       |sparc-sun-solaris2.1[01]

--- Comment #1 from Rainer Orth <ro at gcc dot gnu.org> ---
Richard, a reghunt has confirmed that this regression was caused by this patch:

2014-05-17  Richard Sandiford  <rdsandif...@googlemail.com>

    * emit-rtl.h (replace_equiv_address, replace_equiv_address_nv): Add an
    inplace argument.  Store the new address in the original MEM when true.
    * emit-rtl.c (change_address_1): Likewise.
    (adjust_address_1, adjust_automodify_address_1, offset_address):
    Update accordingly.
    * rtl.h (plus_constant): Add an inplace argument.
    * explow.c (plus_constant): Likewise.  Try to reuse the original PLUS
    when true.  Avoid generating (plus X (const_int 0)).
    * function.c (instantiate_virtual_regs_in_rtx): Adjust the PLUS
    in-place.  Pass true to plus_constant.
    (instantiate_virtual_regs_in_insn): Pass true to replace_equiv_address.

I'm attaching the preprocessed testcase.  The failure can be reproduced with

 cc1 -fpreprocessed limits-fndefn.i -quiet -g -O3 -o limits-fndefn.s

Haven't tried in a cross compiler, though.

  Rainer

Reply via email to