2013-12-06 Jakub Jelinek <jakub@redhat.com>
+ PR tree-optimization/59388
+ * tree-ssa-reassoc.c (update_range_test): If op == range->exp,
+ gimplify tem after stmt rather than before it.
+
* tree-data-ref.c (struct data_ref_loc_d): Replace pos field with ref.
(get_references_in_stmt): Don't record operand addresses, but
operands themselves.
+2013-12-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/59388
+ * gcc.c-torture/execute/pr59388.c: New test.
+
2013-12-06 Dominique d'Humieres <dominiq@lps.ens.fr>
PR testsuite/59043
tem = fold_convert_loc (loc, optype, tem);
gsi = gsi_for_stmt (stmt);
- tem = force_gimple_operand_gsi (&gsi, tem, true, NULL_TREE, true,
- GSI_SAME_STMT);
- for (gsi_prev (&gsi); !gsi_end_p (gsi); gsi_prev (&gsi))
+ /* In rare cases range->exp can be equal to lhs of stmt.
+ In that case we have to insert after the stmt rather then before
+ it. */
+ if (op == range->exp)
+ tem = force_gimple_operand_gsi (&gsi, tem, true, NULL_TREE, false,
+ GSI_CONTINUE_LINKING);
+ else
+ {
+ tem = force_gimple_operand_gsi (&gsi, tem, true, NULL_TREE, true,
+ GSI_SAME_STMT);
+ gsi_prev (&gsi);
+ }
+ for (; !gsi_end_p (gsi); gsi_prev (&gsi))
if (gimple_uid (gsi_stmt (gsi)))
break;
else