http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55619
--- Comment #5 from Marc Glisse <glisse at gcc dot gnu.org> 2012-12-08 08:49:35 UTC --- Indeed I got it down to this code, which fails just the same with an int instead of a vector. I didn't know it was forbidden to pass constants with the "m" constraint, I thought gcc would manage that somehow. What is the appropriate x86 constraint for a vector constant? "C" doesn't seem to work. typedef unsigned __attribute__((vector_size(16))) uvec32; static const uvec32 C = { 0x92d9e201, 0, 0, 0 }; //static const unsigned C = 0x92d9e201; void f() { asm volatile ( "" : : "m"(C)); }