summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormpolacek <mpolacek@138bc75d-0d04-0410-961f-82ee72b054a4>2015-09-09 17:09:32 +0000
committermpolacek <mpolacek@138bc75d-0d04-0410-961f-82ee72b054a4>2015-09-09 17:09:32 +0000
commitc1025e7d7438a0333d6b9d82a76115b15b5a19f9 (patch)
treedc75de5dbb8e23bf8634a5333e69c16632f5cf7b
parentee48893ab9649ac4cca334f86029dcdb81418fd8 (diff)
downloadgcc-c1025e7d7438a0333d6b9d82a76115b15b5a19f9.tar.gz
PR middle-end/67512
* tree-ssa-uninit.c (pred_equal_p): Only call invert_tree_comparison for comparisons. * gcc.dg/pr67512.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@227594 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr67512.c15
-rw-r--r--gcc/tree-ssa-uninit.c3
4 files changed, 28 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 44bf040fe51..5b5f9b681c7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2015-09-09 Marek Polacek <polacek@redhat.com>
+
+ PR middle-end/67512
+ * tree-ssa-uninit.c (pred_equal_p): Only call invert_tree_comparison
+ for comparisons.
+
2015-09-09 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/53184
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 8215fbea23f..dbf06c64a15 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2015-09-09 Marek Polacek <polacek@redhat.com>
+
+ PR middle-end/67512
+ * gcc.dg/pr67512.c: New test.
+
2015-09-09 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/53184
diff --git a/gcc/testsuite/gcc.dg/pr67512.c b/gcc/testsuite/gcc.dg/pr67512.c
new file mode 100644
index 00000000000..95f836aea00
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr67512.c
@@ -0,0 +1,15 @@
+/* PR middle-end/67512 */
+/* { dg-do compile } */
+/* { dg-options "-O -Wuninitialized" } */
+
+extern int fn2 (void);
+extern int fn3 (int);
+void
+fn1 (void)
+{
+ int z, m;
+ if (1 & m) /* { dg-warning "is used uninitialized" } */
+ z = fn2 ();
+ z = 1 == m ? z : 2 == m;
+ fn3 (z);
+}
diff --git a/gcc/tree-ssa-uninit.c b/gcc/tree-ssa-uninit.c
index ec6d6f5a747..fa59642d5a6 100644
--- a/gcc/tree-ssa-uninit.c
+++ b/gcc/tree-ssa-uninit.c
@@ -1296,7 +1296,8 @@ pred_equal_p (pred_info x1, pred_info x2)
return false;
c1 = x1.cond_code;
- if (x1.invert != x2.invert)
+ if (x1.invert != x2.invert
+ && TREE_CODE_CLASS (x2.cond_code) == tcc_comparison)
c2 = invert_tree_comparison (x2.cond_code, false);
else
c2 = x2.cond_code;