--- /dev/null
+/* { dg-do run } */
+
+#define length 16
+typedef int type;
+typedef type v8i64 __attribute__((vector_size(sizeof(type)*length)));
+v8i64 g6, g27;
+_Bool main_c14;
+
+__attribute__((noipa))
+static
+void f(v8i64 *a)
+{
+ for(int i =0;i<length;i++)
+ if ((*a)[i] != -1)
+ __builtin_abort();
+}
+
+int main()
+{
+ if (main_c14) goto lbl_br43;
+lbl_bf7:
+ g6 = 0 <= g27;
+ g27 = g27 <= g27;
+ g27 = g6 > g27;
+lbl_br43:
+ g6 = g6 | g27;
+ if (main_c14) goto lbl_bf7;
+ g6 = g6 * g27 == 0;
+ f(&g6);
+}
for (i = 0; i < length; ++i)
{
- tree elt0 = (*ops)[i]->op;
+ tree &elt0 = (*ops)[i]->op;
gassign *stmt0, *vcond0;
bool invert;
gimple_stmt_iterator gsi = gsi_for_stmt (vcond0);
tree exp = force_gimple_operand_gsi (&gsi, comb, true, NULL_TREE,
true, GSI_SAME_STMT);
- if (invert)
- swap_ssa_operands (vcond0, gimple_assign_rhs2_ptr (vcond0),
- gimple_assign_rhs3_ptr (vcond0));
- gimple_assign_set_rhs1 (vcond0, exp);
- update_stmt (vcond0);
+ tree res = gimple_build (&gsi, true, GSI_SAME_STMT, UNKNOWN_LOCATION,
+ VEC_COND_EXPR, TREE_TYPE (elt0), exp,
+ constant_boolean_node (true,
+ TREE_TYPE (elt0)),
+ constant_boolean_node (false,
+ TREE_TYPE (elt0)));
+ elt0 = res;
elt1 = error_mark_node;
any_changes = true;