PR tree-optimization/28900
* tree-if-conv.c (find_phi_replacement_condition): Gimplify
compound conditional before creating COND_EXPR condition.
* gcc.dg/torture/pr28900.c: New testcase
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116697
138bc75d-0d04-0410-961f-
82ee72b054a4
2006-09-05 Richard Guenther <rguenther@suse.de>
+ PR tree-optimization/28900
+ * tree-if-conv.c (find_phi_replacement_condition): Gimplify
+ compound conditional before creating COND_EXPR condition.
+
+2006-09-05 Richard Guenther <rguenther@suse.de>
+
PR tree-optimization/28905
* tree-vrp.c (fix_equivalence_set): Manually implement
!value_ranges_intersect_p to also handle symbolic ranges.
2006-09-05 Richard Guenther <rguenther@suse.de>
+ PR tree-optimization/28900
+ * gcc.dg/torture/pr28900.c: New testcase
+
+2006-09-05 Richard Guenther <rguenther@suse.de>
+
PR tree-optimization/28905
* gcc.c-torture/compile/pr28905.c: New testcase.
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-ftree-vectorize" } */
+
+int synths_ ( float * rc)
+{
+ float r1, r2;
+ int i;
+ for (i = 0; i < 128; ++i)
+ {
+ r2 = rc[i];
+ r1 = ((r2) <= (.99f) ? (r2) : (.99f));
+ rc[i] = ((r1) >= (-.99f) ? (r1) : (-.99f));
+ }
+}
+
{
basic_block first_bb = NULL;
basic_block second_bb = NULL;
- tree tmp_cond;
+ tree tmp_cond, new_stmts;
gcc_assert (EDGE_COUNT (bb->preds) == 2);
first_bb = (EDGE_PRED (bb, 0))->src;
value as condition. Various targets use different means to communicate
condition in vector compare operation. Using gimple value allows compiler
to emit vector compare and select RTL without exposing compare's result. */
+ *cond = force_gimple_operand (*cond, &new_stmts, false, NULL_TREE);
+ if (new_stmts)
+ bsi_insert_before (bsi, new_stmts, BSI_SAME_STMT);
if (!is_gimple_reg (*cond) && !is_gimple_condexpr (*cond))
{
tree new_stmt;