------- Comment #9 from pinskia at gmail dot com 2007-03-23 08:01 ------- Subject: Re: [4.2 Regression] FRE ignores bit-field truncation (C and C++ front-end don't produce bit-field truncation
On 3/23/07, Andrew Pinski <[EMAIL PROTECTED]> wrote: > On 23 Mar 2007 05:01:00 -0000, spark at gcc dot gnu dot org > <[EMAIL PROTECTED]> wrote: > > The problematic STRIP_SIGN_NOPS() call is from fold_unary() > > which is called from try_combine_conversion() in tree-ssa-pre.c. > > > > STRIP_SIGN_NOPS() is called with the expression: > > No, STRIP_SIGN_NOPS is correct, just fold_unary is incorrect in its > folding. It should have called fold_convert on the expression if the > types are different and it is a constant. Ok, the real issue is that we call fold with NOP_EXPR<NOP_EXPR<INTEGER_CST>> instead of just NOP_EXPR<INTEGER_CST> so you have to figure out where we should fold the first NOP_EXPR instead of that patch. -- Pinski -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31136