------- Comment #6 from hjl dot tools at gmail dot com 2008-08-28 21:28 ------- (In reply to comment #5) > (In reply to comment #4) > > (In reply to comment #1) > > > Fix for at least PowerPC (we should be trying to get the correct sized > > > vector > > > mode): > > > Index: expmed.c > > > =================================================================== > > > --- expmed.c (revision 2510) > > > +++ expmed.c (working copy) > > > @@ -1129,7 +1129,7 @@ extract_bit_field (rtx str_rtx, unsigned > > > new_mode = MIN_MODE_VECTOR_INT; > > > > > > for (; new_mode != VOIDmode ; new_mode = GET_MODE_WIDER_MODE > > > (new_mode)) > > > - if (GET_MODE_NUNITS (new_mode) == nunits > > > + if (GET_MODE_SIZE (new_mode) == GET_MODE_SIZE (new_mode) > > > > I may have missed something. Is this always true? > > Try replacing one of the new_mode with GET_MODE (op0) :). >
Both patches avoid ICE on my testcase. But my patch generates short code. Can you try my patch on your testcase? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36444