aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vrp.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2015-01-29 13:50:37 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2015-01-29 13:50:37 +0000
commitd94e3e750d1e5c2fc9ecc8e8a32adec33fc85f8e (patch)
tree9bc44a875566081bd8465765ea38024d21452464 /gcc/tree-vrp.c
parent16277100d305948fa6d6fb5a4a318d9728c2400f (diff)
downloadgcc-d94e3e750d1e5c2fc9ecc8e8a32adec33fc85f8e.zip
gcc-d94e3e750d1e5c2fc9ecc8e8a32adec33fc85f8e.tar.gz
gcc-d94e3e750d1e5c2fc9ecc8e8a32adec33fc85f8e.tar.bz2
re PR tree-optimization/64853 (wrong code at -Os and above on x86_64-linux-gnu)
2015-01-29 Richard Biener <rguenther@suse.de> PR tree-optimization/64853 * tree-vrp.c (vrp_valueize_1): Do not return anything if the stmt will get simulated again. * tree-ssa-ccp.c (valueize_op_1): Likewise. * gcc.dg/torture/pr64853.c: New testcase. From-SVN: r220247
Diffstat (limited to 'gcc/tree-vrp.c')
-rw-r--r--gcc/tree-vrp.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index 2bc22c6..ef1c21d 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -7092,15 +7092,15 @@ vrp_valueize_1 (tree name)
{
if (TREE_CODE (name) == SSA_NAME)
{
- value_range_t *vr = get_value_range (name);
- if (range_int_cst_singleton_p (vr))
- return vr->min;
/* If the definition may be simulated again we cannot follow
this SSA edge as the SSA propagator does not necessarily
re-visit the use. */
gimple def_stmt = SSA_NAME_DEF_STMT (name);
if (prop_simulate_again_p (def_stmt))
return NULL_TREE;
+ value_range_t *vr = get_value_range (name);
+ if (range_int_cst_singleton_p (vr))
+ return vr->min;
}
return name;
}