aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-propagate.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2014-04-17 08:13:53 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2014-04-17 08:13:53 +0000
commit83ad208e2cd0f0d14e1f138598556a0a5a34764d (patch)
tree68de519b6f715ed1c48ce0e8e44214180f6db8f2 /gcc/tree-ssa-propagate.c
parent730e78b04506e157c2b0f309f8250d2d9d46a77d (diff)
downloadgcc-83ad208e2cd0f0d14e1f138598556a0a5a34764d.zip
gcc-83ad208e2cd0f0d14e1f138598556a0a5a34764d.tar.gz
gcc-83ad208e2cd0f0d14e1f138598556a0a5a34764d.tar.bz2
re PR tree-optimization/60849 (bogus comparison result type)
2014-04-17 Richard Biener <rguenther@suse.de> PR middle-end/60849 * tree-ssa-propagate.c (valid_gimple_rhs_p): Only allow effective boolean results for comparisons. * g++.dg/opt/pr60849.C: New testcase. From-SVN: r209469
Diffstat (limited to 'gcc/tree-ssa-propagate.c')
-rw-r--r--gcc/tree-ssa-propagate.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/tree-ssa-propagate.c b/gcc/tree-ssa-propagate.c
index 840d7e7..47fd154 100644
--- a/gcc/tree-ssa-propagate.c
+++ b/gcc/tree-ssa-propagate.c
@@ -571,8 +571,14 @@ valid_gimple_rhs_p (tree expr)
/* All constants are ok. */
break;
- case tcc_binary:
case tcc_comparison:
+ if (!INTEGRAL_TYPE_P (TREE_TYPE (expr))
+ || (TREE_CODE (TREE_TYPE (expr)) != BOOLEAN_TYPE
+ && TYPE_PRECISION (TREE_TYPE (expr)) != 1))
+ return false;
+
+ /* Fallthru. */
+ case tcc_binary:
if (!is_gimple_val (TREE_OPERAND (expr, 0))
|| !is_gimple_val (TREE_OPERAND (expr, 1)))
return false;