aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-propagate.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2014-04-17 13:50:55 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2014-04-17 13:50:55 +0000
commitb94970bc41f7b2c6ab28d52493f95efcf2fa97de (patch)
tree7d3802317bcd2b113d5fef1e34026df49ccc04bb /gcc/tree-ssa-propagate.c
parent92f0f3ec9210d529daa3271f6108e18600c9c2c3 (diff)
downloadgcc-b94970bc41f7b2c6ab28d52493f95efcf2fa97de.zip
gcc-b94970bc41f7b2c6ab28d52493f95efcf2fa97de.tar.gz
gcc-b94970bc41f7b2c6ab28d52493f95efcf2fa97de.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): Allow vector comparison results and add clarifying comment. From-SVN: r209486
Diffstat (limited to 'gcc/tree-ssa-propagate.c')
-rw-r--r--gcc/tree-ssa-propagate.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/tree-ssa-propagate.c b/gcc/tree-ssa-propagate.c
index 47fd154..59e46dc 100644
--- a/gcc/tree-ssa-propagate.c
+++ b/gcc/tree-ssa-propagate.c
@@ -572,9 +572,13 @@ valid_gimple_rhs_p (tree expr)
break;
case tcc_comparison:
- if (!INTEGRAL_TYPE_P (TREE_TYPE (expr))
- || (TREE_CODE (TREE_TYPE (expr)) != BOOLEAN_TYPE
- && TYPE_PRECISION (TREE_TYPE (expr)) != 1))
+ /* GENERIC allows comparisons with non-boolean types, reject
+ those for GIMPLE. Let vector-typed comparisons pass - rules
+ for GENERIC and GIMPLE are the same here. */
+ if (!(INTEGRAL_TYPE_P (TREE_TYPE (expr))
+ && (TREE_CODE (TREE_TYPE (expr)) == BOOLEAN_TYPE
+ || TYPE_PRECISION (TREE_TYPE (expr)) == 1))
+ && ! VECTOR_TYPE_P (TREE_TYPE (expr)))
return false;
/* Fallthru. */