aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2016-07-25 12:50:30 +0200
committerMartin Liska <marxin@gcc.gnu.org>2016-07-25 10:50:30 +0000
commit16b0596564668914c43e4dce6724af1e602664d4 (patch)
treef44c5cd3ee4d5141243b26e7fcc9ad504976a038
parent19bb30c065848fab2edc67f56990704e42345b2b (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr71987.c21
-rw-r--r--gcc/tree-ssa-reassoc.c7
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 ();