diff options
author | Yuri Rumyantsev <ysrumyan@gmail.com> | 2016-01-18 14:14:35 +0000 |
---|---|---|
committer | Ilya Enkovich <ienkovich@gcc.gnu.org> | 2016-01-18 14:14:35 +0000 |
commit | 305708cedd962831b648783936cb6991dfdeb87d (patch) | |
tree | fd70591afccdc84c6a6d41f54a41b785c0f898b8 /gcc/tree-vrp.c | |
parent | 969028053faeba62b856707b0ab5d49a15edc688 (diff) | |
download | gcc-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.c | 5 |
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. |