http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47755

Michael Meissner <meissner at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
   Last reconfirmed|                            |2011.03.04 22:46:42
         Resolution|FIXED                       |
     Ever Confirmed|0                           |1

--- Comment #7 from Michael Meissner <meissner at gcc dot gnu.org> 2011-03-04 
22:46:42 UTC ---
It appears the patch was not complete.

The patch now breaks other V2DImode constants.  In particular:
  vector long long a = (vector long long) { -1, 0 }

will generate a vsplitw <reg>,0 which skips the -1.  The problem is in
easy_altivec_constant in the line:
  step = GET_MODE_NUNITS (mode) / 4;

For V2DImode, step is 0, and the rest of the tests fail.

The enclosed patch tightens this to only allow all 0's or all 1's as easy V2DI
constants (and all 0's as an easy V2DF constant).

Reply via email to