https://gcc.gnu.org/bugzilla/show_bug.cgi?id=76783
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2016-08-15 Component|rtl-optimization |c Target Milestone|--- |7.0 Ever confirmed|0 |1 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Confirmed. Note that I think the vector construction doesn't work already. From the .gimple dump: foo (unsigned int c, v64u128 v) { u128 D.1767; v64u128 u; try { if (c != 0) goto <D.1764>; else goto <D.1765>; <D.1764>: u = { 0, 0, 0, 0 }; goto <D.1766>; <D.1765>: u = { 0, 1, 0, 0 }; <D.1766>: u.0_1 = u; _2 = v + u.0_1; u = _2; D.1767 = BIT_FIELD_REF <u, 128, 128>; return D.1767; here the upper __int128 in the vector is obviously zero. Somehow a mix-up somewhere.