===================================================================
@@ -9733,7 +9733,7 @@ build_binary_op (location_t location, en
sc = convert (TREE_TYPE (type0), sc);
op1 = build_vector_from_val (type0, sc);
if (!maybe_const)
- op0 = c_wrap_maybe_const (op1, true);
+ op1 = c_wrap_maybe_const (op1, true);
orig_type1 = type1 = TREE_TYPE (op1);
code1 = TREE_CODE (type1);
converted = 1;
===================================================================
@@ -0,0 +1,24 @@
+/* { dg-do run } */
+
+extern void abort (void);
+
+int f(void) { return 2; }
+unsigned int g(void) { return 5; }
+unsigned int h = 1;
+
+typedef unsigned int vec __attribute__((vector_size(16)));
+
+vec i = { 1, 2, 3, 4};
+
+vec fv1(void) { return i + (h ? f() : g()); }
+vec fv2(void) { return (h ? f() : g()) + i; }
+
+int main()
+{
+ vec i, j;
+ j = fv1();
+ if (j[0] != 3) abort();
+ i = fv2();
+ if (i[0] != 3) abort();
+ return 0;
+}