aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-math-opts.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-08-11 13:29:12 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2018-08-11 13:29:12 +0200
commit8be591a9cd557be85e591a0362d220d84c296bd4 (patch)
treee26d90f847d8519eda7b00b95cefd1491a045b12 /gcc/tree-ssa-math-opts.c
parentfc186cbd1cdff6cecdb8eb0a350c3ee0af2d1332 (diff)
downloadgcc-8be591a9cd557be85e591a0362d220d84c296bd4.zip
gcc-8be591a9cd557be85e591a0362d220d84c296bd4.tar.gz
gcc-8be591a9cd557be85e591a0362d220d84c296bd4.tar.bz2
re PR tree-optimization/86835 (Bogus "is used uninitialized" warning with -ffast-math)
PR tree-optimization/86835 * tree-ssa-math-opts.c (insert_reciprocals): Even when inserting new_stmt after def_gsi, make sure to insert new_square_stmt after that stmt, not 2 stmts before it. * gcc.dg/pr86835.c: New test. From-SVN: r263487
Diffstat (limited to 'gcc/tree-ssa-math-opts.c')
-rw-r--r--gcc/tree-ssa-math-opts.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/gcc/tree-ssa-math-opts.c b/gcc/tree-ssa-math-opts.c
index e32669d..a90d9d2 100644
--- a/gcc/tree-ssa-math-opts.c
+++ b/gcc/tree-ssa-math-opts.c
@@ -422,6 +422,8 @@ insert_reciprocals (gimple_stmt_iterator *def_gsi, struct occurrence *occ,
gsi_next (&gsi);
gsi_insert_before (&gsi, new_stmt, GSI_SAME_STMT);
+ if (should_insert_square_recip)
+ gsi_insert_before (&gsi, new_square_stmt, GSI_SAME_STMT);
}
else if (def_gsi && occ->bb == def_gsi->bb)
{
@@ -429,21 +431,19 @@ insert_reciprocals (gimple_stmt_iterator *def_gsi, struct occurrence *occ,
never happen if the definition statement can throw, because in
that case the sole successor of the statement's basic block will
dominate all the uses as well. */
- gsi = *def_gsi;
gsi_insert_after (def_gsi, new_stmt, GSI_NEW_STMT);
+ if (should_insert_square_recip)
+ gsi_insert_after (def_gsi, new_square_stmt, GSI_NEW_STMT);
}
else
{
/* Case 3: insert in a basic block not containing defs/uses. */
gsi = gsi_after_labels (occ->bb);
gsi_insert_before (&gsi, new_stmt, GSI_SAME_STMT);
+ if (should_insert_square_recip)
+ gsi_insert_before (&gsi, new_square_stmt, GSI_SAME_STMT);
}
- /* Regardless of which case the reciprocal as inserted in,
- we insert the square immediately after the reciprocal. */
- if (should_insert_square_recip)
- gsi_insert_before (&gsi, new_square_stmt, GSI_SAME_STMT);
-
reciprocal_stats.rdivs_inserted++;
occ->recip_def_stmt = new_stmt;