aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vrp.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2014-03-12 10:15:08 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2014-03-12 10:15:08 +0100
commitb24ca895d7a5e5d18782a230f133cd8346f00c11 (patch)
tree9056a4619bab3ad694d7046b82cc4f590bf3bb48 /gcc/tree-vrp.c
parent33a9145bb7229ba592e9a4f7ee9c68399ac5d070 (diff)
downloadgcc-b24ca895d7a5e5d18782a230f133cd8346f00c11.zip
gcc-b24ca895d7a5e5d18782a230f133cd8346f00c11.tar.gz
gcc-b24ca895d7a5e5d18782a230f133cd8346f00c11.tar.bz2
re PR middle-end/60482 (Loop optimization regression)
PR middle-end/60482 * tree-vrp.c (register_edge_assert_for_1): Don't add assert if there are multiple uses, but op doesn't live on E edge. * tree-cfg.c (assert_unreachable_fallthru_edge_p): Also ignore clobber stmts before __builtin_unreachable. * gcc.dg/vect/pr60482.c: New test. From-SVN: r208506
Diffstat (limited to 'gcc/tree-vrp.c')
-rw-r--r--gcc/tree-vrp.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index 7aa732d..3060210 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -5423,12 +5423,9 @@ register_edge_assert_for_1 (tree op, enum tree_code code,
return false;
/* We know that OP will have a zero or nonzero value. If OP is used
- more than once go ahead and register an assert for OP.
-
- The FOUND_IN_SUBGRAPH support is not helpful in this situation as
- it will always be set for OP (because OP is used in a COND_EXPR in
- the subgraph). */
- if (!has_single_use (op))
+ more than once go ahead and register an assert for OP. */
+ if (live_on_edge (e, op)
+ && !has_single_use (op))
{
val = build_int_cst (TREE_TYPE (op), 0);
register_new_assert_for (op, op, code, val, NULL, e, bsi);