http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54201
Richard Guenther <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2012-08-08 Component|target |middle-end Ever Confirmed|0 |1 Known to fail| |4.8.0 --- Comment #2 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-08-08 11:53:16 UTC --- That's because on the GIMPLE level we are type correct and see test (__m128i value) { <bb 2>: <anon>_3 = __builtin_ia32_pand128 (value_1(D), { 72340172838076673, 72340172838076673 }); <anon>_4 = VIEW_CONVERT_EXPR<vector(16) char>(<anon>_3); <anon>_5 = __builtin_ia32_pcmpeqb128 (<anon>_4, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }); <anon>_6 = VIEW_CONVERT_EXPR<__m128i>(<anon>_5); return <anon>_6; I don't think we have too fancy constant pool code to allow sharing of bit-identical values. Confirmed. middle-end, constant pool handling in varasm.c.