+2017-06-30 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/81249
+ * tree-vect-loop.c (vect_create_epilog_for_reduction): Convert
+ condition reduction result to original scalar type.
+
2017-06-30 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
* profile-count.h (enum profile_quality): Fix typos and whitespace
+2017-06-30 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/81249
+ * g++.dg/torture/pr81249.C: New testcase.
+
2017-06-29 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/cpp0x/inh-ctor3.C: Adjust for dg-message vs dg-error.
/* Convert the reduced value back to the result type and set as the
result. */
- tree data_reduc_cast = build1 (VIEW_CONVERT_EXPR, scalar_type,
- data_reduc);
- epilog_stmt = gimple_build_assign (new_scalar_dest, data_reduc_cast);
- new_temp = make_ssa_name (new_scalar_dest, epilog_stmt);
- gimple_assign_set_lhs (epilog_stmt, new_temp);
- gsi_insert_before (&exit_gsi, epilog_stmt, GSI_SAME_STMT);
+ gimple_seq stmts = NULL;
+ new_temp = gimple_convert (&stmts, scalar_type, data_reduc);
+ gsi_insert_seq_before (&exit_gsi, stmts, GSI_SAME_STMT);
scalar_results.safe_push (new_temp);
}
else if (STMT_VINFO_VEC_REDUCTION_TYPE (stmt_info) == COND_REDUCTION
val = new_val;
}
}
+ /* Convert the reduced value back to the result type and set as the
+ result. */
+ gimple_seq stmts = NULL;
+ val = gimple_convert (&stmts, scalar_type, val);
+ gsi_insert_seq_before (&exit_gsi, stmts, GSI_SAME_STMT);
scalar_results.safe_push (val);
}