diff options
author | Martin Liska <mliska@suse.cz> | 2016-07-25 12:50:30 +0200 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2016-07-25 10:50:30 +0000 |
commit | 16b0596564668914c43e4dce6724af1e602664d4 (patch) | |
tree | f44c5cd3ee4d5141243b26e7fcc9ad504976a038 | |
parent | 19bb30c065848fab2edc67f56990704e42345b2b (diff) | |
download | gcc-16b0596564668914c43e4dce6724af1e602664d4.zip gcc-16b0596564668914c43e4dce6724af1e602664d4.tar.gz gcc-16b0596564668914c43e4dce6724af1e602664d4.tar.bz2 |
Call get_ops just for SSA_NAMEs (PR tree-optimization/71987)
PR tree-optimization/71987
* tree-ssa-reassoc.c (maybe_optimize_range_tests): Call get_ops
just for SSA_NAMEs. Fix GNU coding style.
* gcc.dg/torture/pr71987.c: New test.
From-SVN: r238704
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr71987.c | 21 | ||||
-rw-r--r-- | gcc/tree-ssa-reassoc.c | 7 |
4 files changed, 35 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 85dd571..a6755ab 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2016-07-25 Martin Liska <mliska@suse.cz> + PR tree-optimization/71987 + * tree-ssa-reassoc.c (maybe_optimize_range_tests): Call get_ops + just for SSA_NAMEs. Fix GNU coding style. + +2016-07-25 Martin Liska <mliska@suse.cz> + PR gcov-profile/64874 * gcov-io.h: Update command about file format. * gcov-iov.c (main): Adapt the numbering scheme. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2c38151..dcbc5c3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2016-07-25 Martin Liska <mliska@suse.cz> + + * gcc.dg/torture/pr71987.c: New test. + 2016-07-22 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/71935 diff --git a/gcc/testsuite/gcc.dg/torture/pr71987.c b/gcc/testsuite/gcc.dg/torture/pr71987.c new file mode 100644 index 0000000..87d5938 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr71987.c @@ -0,0 +1,21 @@ +/* PR tree-optimization/71987 */ + +int a, b, *c, *d; + +short fn1 (int p1) +{ + return a ? p1 : a; +} + +void fn2 () +{ + int e, *f = &e; + b = fn1 (d != &e); + c = f; +} + +int main () +{ + fn2 (); + return 0; +} diff --git a/gcc/tree-ssa-reassoc.c b/gcc/tree-ssa-reassoc.c index ece2d08..18cf978 100644 --- a/gcc/tree-ssa-reassoc.c +++ b/gcc/tree-ssa-reassoc.c @@ -3519,7 +3519,8 @@ maybe_optimize_range_tests (gimple *stmt) (or &, corresponding to 1/0 in the phi arguments, push into ops the individual range test arguments of the bitwise or resp. and, recursively. */ - if (!get_ops (rhs, code, &ops, + if (TREE_CODE (rhs) == SSA_NAME + && !get_ops (rhs, code, &ops, loop_containing_stmt (stmt)) && (TREE_CODE_CLASS (gimple_assign_rhs_code (stmt)) != tcc_comparison) @@ -3540,8 +3541,8 @@ maybe_optimize_range_tests (gimple *stmt) else if (is_gimple_assign (stmt) && (TREE_CODE_CLASS (gimple_assign_rhs_code (stmt)) == tcc_comparison) - &&!get_ops (lhs, code, &ops, - loop_containing_stmt (stmt)) + && !get_ops (lhs, code, &ops, + loop_containing_stmt (stmt)) && has_single_use (lhs)) { operand_entry *oe = operand_entry_pool.allocate (); |