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).