This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [4.7 RFT PATCH, i386]: Backport recent LEA improvements to 4.7 branch
- From: Richard Guenther <richard dot guenther at gmail dot com>
- To: Uros Bizjak <ubizjak at gmail dot com>
- Cc: gcc-patches at gcc dot gnu dot org, "H.J. Lu" <hjl dot tools at gmail dot com>
- Date: Wed, 25 Jul 2012 13:45:28 +0200
- Subject: Re: [4.7 RFT PATCH, i386]: Backport recent LEA improvements to 4.7 branch
- References: <CAFULd4ZSP6ex6YqucQyms9mXA5Fr_uXWrQ4SrSXvF=Nw8=r9vg@mail.gmail.com>
On Tue, Jul 24, 2012 at 9:32 PM, Uros Bizjak <ubizjak@gmail.com> wrote:
> Hello!
>
> Attached patch backports recent LEA improvements to 4.7 branch.
As in regression fixes, or wrong-code fixes? This looks suspiciously not
appropriate for 4.7 ...
Richard.
> The
> patch unifies handling of LEA addresses with generic address handling,
> allowing some more zero-extended addresses for both cases.
>
> 2012-XX-XX Uros Bizjak <ubizjak@gmail.com>
>
> Backport from mainline
> 2012-07-24 Uros Bizjak <ubizjak@gmail.com>
>
> PR target/53961
> * config/i386/i386.c (ix86_legitimate_address_p): Move check for
> negative constant address for TARGET_X32 ...
> (ix86_decompose_address): ... here. Reject constant addresses
> that don't satisfy x86_64_immediate_operand predicate.
>
> 2012-07-23 Uros Bizjak <ubizjak@gmail.com>
>
> PR target/53961
> * config/i386/i386.md (*lea): Add asserts to detect invalid addresses.
> * config/i386/i386.c (ix86_print_operand_address): Ditto.
> (ix86_decompose_address): Allow (zero_extend:DI (subreg:SI (...)))
> addresses. Prevent zero extensions of CONST_INT operands.
>
> 2012-07-22 Uros Bizjak <ubizjak@gmail.com>
>
> PR target/53961
> * config/i386/i386.md (*lea): New insn pattern.
> (*lea_1): Remove.
> (*lea<mode>_2): Ditto.
> (*lea_{3,4,5,6}_zext): Ditto.
> * config/i386/predicates.md (lea_address_operand): Do not reject
> zero-extended address operands.
> * config/i386/constraints.md (j): Remove address constraint.
> * config/i386/i386.c (ix86_decompose_address): Allow SImode subreg
> of an address.
> (ix86_print_operand_address): Handle SImode subreg of an address.
> (ix86_avoid_lea_for_addr): Reject zero-extended addresses for now.
>
> 2012-03-09 Uros Bizjak <ubizjak@gmail.com>
>
> PR target/52530
> * config/i386/i386.c (ix86_print_operand): Handle 'E' operand modifier.
> (ix86_print_operand_address): Handle UNSPEC_LEA_ADDR. Do not fallback
> to set code to 'q'.
> * config/i386/i386.md (UNSPEC_LEA_ADDR): New unspec.
> (*movdi_internal_rex64): Use %E operand modifier for lea.
> (*movsi_internal): Ditto.
> (*lea_1): Ditto.
> (*lea<mode>_2): Ditto.
> (*lea_{3,4,5,6}_zext): Ditto.
> (*tls_global_dynamic_32_gnu): Ditto.
> (*tls_global_dynamic_64): Ditto.
> (*tls_dynamic_gnu2_lea_32): Ditto.
> (*tls_dynamic_gnu2_lea_64): Ditto.
> (pro_epilogue_adjust_stack_<mode>_add): Ditto.
>
> testsuite/ChangeLog:
>
> 2012-XX-XX Uros Bizjak <ubizjak@gmail.com>
>
> Backport from mainline
> 2012-03-11 Uros Bizjak <ubizjak@gmail.com>
>
> PR target/52530
> * gcc.dg/torture/pr52530.c: New test.
>
> Patch was bootstrapped and regression tested on x86_64-pc-linux-gnu
> {,-m32} and various x32 compile tests. However, this patch needs
> further testing on a real x32 target and maybe SPEC 2000/2006
> benchmark for x86_64, i686 and x32 target. On mainline, this patch
> works OK everywhere.
>
> Uros.