aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vrp.c
diff options
context:
space:
mode:
authorYuri Rumyantsev <ysrumyan@gmail.com>2016-01-18 14:14:35 +0000
committerIlya Enkovich <ienkovich@gcc.gnu.org>2016-01-18 14:14:35 +0000
commit305708cedd962831b648783936cb6991dfdeb87d (patch)
treefd70591afccdc84c6a6d41f54a41b785c0f898b8 /gcc/tree-vrp.c
parent969028053faeba62b856707b0ab5d49a15edc688 (diff)
downloadgcc-305708cedd962831b648783936cb6991dfdeb87d.zip
gcc-305708cedd962831b648783936cb6991dfdeb87d.tar.gz
gcc-305708cedd962831b648783936cb6991dfdeb87d.tar.bz2
re PR middle-end/68542 (10% 481.wrf performance regression)
gcc/ 2016-01-18 Yuri Rumyantsev <ysrumyan@gmail.com> PR middle-end/68542 * fold-const.c (fold_binary_op_with_conditional_arg): Bail out for case of mixind vector and scalar types. (fold_relational_const): Add handling of vector comparison with boolean result. * tree-cfg.c (verify_gimple_comparison): Add argument CODE, allow comparison of vector operands with boolean result for EQ/NE only. (verify_gimple_assign_binary): Adjust call for verify_gimple_comparison. (verify_gimple_cond): Likewise. * tree-vrp.c (extract_code_and_val_from_cond_with_ops): Modify check on valid type of VAL. From-SVN: r232518
Diffstat (limited to 'gcc/tree-vrp.c')
-rw-r--r--gcc/tree-vrp.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index 8f35eb7..159d487 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -5067,8 +5067,9 @@ extract_code_and_val_from_cond_with_ops (tree name, enum tree_code cond_code,
if (invert)
comp_code = invert_tree_comparison (comp_code, 0);
- /* VRP does not handle float types. */
- if (SCALAR_FLOAT_TYPE_P (TREE_TYPE (val)))
+ /* VRP only handles integral and pointer types. */
+ if (! INTEGRAL_TYPE_P (TREE_TYPE (val))
+ && ! POINTER_TYPE_P (TREE_TYPE (val)))
return false;
/* Do not register always-false predicates.