https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87532
--- Comment #14 from kelvin at gcc dot gnu.org --- To reconcile comments 12 and 13, the subtle issue is that we don't even get into the altivec_resolve_overloaded_builtin function for the following code: vec_extract (vi, 10); The gimple expander replaces this code with BIT_FIELD_REF <> before even attempting to expand this overloaded builtin. However, in the case that the "identical" code is represented by inlined function X, we do come through altivec_resolve_overloaded_builtin. int X (vector int vi, int index) { return vec_extract (vi, index); } ... X (vi, 10) There are "two" ways to fix this problem. Either we can make the gimple expansion of in-lined functions match the non-inlined functions, or we can insert code into altivec_resolve_overloaded_builtin to accommodate the inconsistencies. I gather you prefer I address this within altivec_resolve_overloaded_builtin. I'll pursue this unless directed otherwise.