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: PR/18308: ice-on-valid because of non-GIMPLE


On Tue, 28 Dec 2004, Paolo Bonzini wrote:
> This patch is a fix for PR18308, an ice-on-valid that happens
> when the vectorizer cannot make use of a COND_EXPR produced
> by tree-level if-conversion.  In this case, TER can combine
> two COND_EXPRs in a way that is not recognized by do_jump:
> fixing this part is easy because COND_EXPRs are recognized
> by expand_expr_real_1 which is where do_jump's default label
> goes.

I'll only comment on the change to dojump.c.  Although, COND_EXPR
*can* be handled by the call to expand_expr_real_1 in do_jump's
default case, it generates worse RTL than the original handling
of COND_EXPR in do_jump that was deleted by your earlier patch:

2004-08-17  Paolo Bonzini  <bonzini@gnu.org>

        * dojump.c (do_jump) <COND_EXPR, EQ_EXPR, NE_EXPR,
        TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, COMPOUND_EXPR>:
        Abort on gimplified cases.


Might I strongly recommend that if we're reversing that previous
decision, and wish to allow do_jump to handle COND_EXPR again,
that we additionally revert the <COND_EXPR> part of the patch cited
above, i.e. the relevant hunks of "cvs diff -r1.27 -r1.26 dojump.c".

It would be a shame to so easily loose some of GCC's optimizations.


Roger
--


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