This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: ifcvt/crossjump patch: Fix PR 42496, 21803


On 04/10/2010 12:35 PM, Eric Botcazou wrote:

> Could you split it up though, i.e. have a first patch to fix PR 21803/42496 
> and a second patch for the additional optimization?  This helps reghunting.

Here's the second part.  This one should help most architectures, not
just the ones with conditional execution.  I've observed it helps on
i686 and arm, with the following being a typical result:

 .L18:
        ldr     r1, [r2, #4]
        cmp     r1, #34
-       it      hi
-       ldrhi   r3, .L98+12
-       bhi     .L28
        ldr     r3, .L98+12
+       bhi     .L28
        ldrb    r2, [r3, #4]    @ zero_extendqisi2
        cbz     r2, .L29
        ldr     r3, [r3, #8]

Compared with the previous version, this one has one additional bugfix
(reject all jumps that have a PARALLEL pattern).  Successfully tested
earlier on arm-linux-gnueabi
(qemu-system-armv7{arch=armv7-a/thumb,thumb,}), also tested with a SPEC
run on Cortex-A9 within CodeSourcery's gcc-4.4; another re-bootstrap on
i686-linux now in progress.  Ok?


Bernd

Attachment: ifcvt-across.diff
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]