diff options
author | mpolacek <mpolacek@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-09-09 17:09:32 +0000 |
---|---|---|
committer | mpolacek <mpolacek@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-09-09 17:09:32 +0000 |
commit | c1025e7d7438a0333d6b9d82a76115b15b5a19f9 (patch) | |
tree | dc75de5dbb8e23bf8634a5333e69c16632f5cf7b | |
parent | ee48893ab9649ac4cca334f86029dcdb81418fd8 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr67512.c | 15 | ||||
-rw-r--r-- | gcc/tree-ssa-uninit.c | 3 |
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; |