ix86_expand_vec_set_builtin is used to expand builtin funtions like v4hi __builtin_ia32_vec_set_v4hi (v4hi, short, const int);
for pattens like [(set (match_operand:V8HI 0 "register_operand" "=x") (vec_merge:V8HI (vec_duplicate:V8HI (match_operand:HI 2 "nonimmediate_operand" "rm")) (match_operand:V8HI 1 "register_operand" "0") (match_operand:SI 3 "const_pow2_1_to_128_operand" "n")))] These builtins take 3 args. Operand 0 is used as both source and target. However, ix86_expand_vec_set_builtin only uses 2 args and returns the first arg as target. As the result, those builtins functions may modify the source while they shouldn't. -- Summary: ix86_expand_vec_set_builtin modifies source Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: hjl at lucon dot org GCC target triplet: x86_64-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31582