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/01/2010 07:00 PM, Steven Bosscher wrote:
> On Thu, Apr 1, 2010 at 12:29 AM, Bernd Schmidt <bernds@codesourcery.com> wrote:
>> The two PRs 42496 and 21803 show a problem with the RTL ifcvt pass:
>> sometimes, we end up with two identical insns, predicated with opposite
>> conditions.
> 
> Cool. But unfortunately I get an ICE on ia64 with this patch applied.

Here's a new version of the patch, with the ICE fixed.  Also, I've added
another optimization in the same spirit to ifcvt: if we have identical
sequences at the head of the then and else blocks, try to move them
backwards across the if statement.  This helps even on targets that
don't support conditional execution.

A slightly earlier version of this patch was bootstrapped and tested on
i686-linux and ia64-linux.  On ia64, there were the following problems,
none of which I believe to show a problem with the patch:

  * Examine the testcase gcc.c-torture/compile/920625-1.c: it has
    workarounds for an ia64 assembler bug related to predication.  The
    same issue now also occurs in a libstdc++ testcase and two
    libgfortran ones.  Jim - any ideas what to do about this?
  * One libmudflap test fails: pass54-frag.c, which seems to be a
    problem with the testcase - it passes when I add a return 0 at the
    end of main.
  * libmudflap.cth/pass40-frag is sometimes timing out, but when run
    manually it seems to work fine and I've also had successful runs
    from make check-target-libmudflap.

Ok for 4.6?


Bernd

Attachment: ifcvt-v5.diff
Description: Text document


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