diff options
| author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-08-03 19:26:10 +0000 |
|---|---|---|
| committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-08-03 19:26:10 +0000 |
| commit | cbb04ca92323480471b9475688cc20af9409045a (patch) | |
| tree | 880f2f769dc0994ba432ededf29411924db85d5f | |
| parent | 444e42cce08b2c2886b81241961bf271d1e77b1e (diff) | |
| download | ppe42-gcc-cbb04ca92323480471b9475688cc20af9409045a.tar.gz ppe42-gcc-cbb04ca92323480471b9475688cc20af9409045a.zip | |
PR middle-end/40943
* tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
operand of INDIRECT_REF.
* gcc.dg/uninit-6.c: Re-add XFAIL.
* gcc.dg/uninit-6-O0.c: Likewise.
* gcc.dg/uninit-pr40943.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150379 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
| -rw-r--r-- | gcc/testsuite/gcc.dg/uninit-6-O0.c | 2 | ||||
| -rw-r--r-- | gcc/testsuite/gcc.dg/uninit-6.c | 2 | ||||
| -rw-r--r-- | gcc/testsuite/gcc.dg/uninit-pr40943.c | 10 | ||||
| -rw-r--r-- | gcc/tree-ssa.c | 7 |
6 files changed, 31 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 04816e3f0de..4d9d516f3ed 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-08-03 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/40943 + * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for + operand of INDIRECT_REF. + 2009-08-03 Uros Bizjak <ubizjak@gmail.com> * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 26560b505fe..e2b141cfd30 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2009-08-03 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/40943 + * gcc.dg/uninit-6.c: Re-add XFAIL. + * gcc.dg/uninit-6-O0.c: Likewise. + * gcc.dg/uninit-pr40943.c: New test. + 2009-08-03 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> PR testsuite/40858 diff --git a/gcc/testsuite/gcc.dg/uninit-6-O0.c b/gcc/testsuite/gcc.dg/uninit-6-O0.c index f4588305ffa..e3fefe5e1c5 100644 --- a/gcc/testsuite/gcc.dg/uninit-6-O0.c +++ b/gcc/testsuite/gcc.dg/uninit-6-O0.c @@ -39,7 +39,7 @@ make_something(int a, int b, int c) rv = malloc (sizeof (struct tree)); rv->car = 0; - APPEND(rv, field, INTEGER_T, a); /* { dg-bogus "field" "uninitialized variable warning" } */ + APPEND(rv, field, INTEGER_T, a); /* { dg-bogus "field" "uninitialized variable warning" { xfail *-*-* } } */ APPEND(rv, field, PTR_T, b); APPEND(rv, field, INTEGER_T, c); diff --git a/gcc/testsuite/gcc.dg/uninit-6.c b/gcc/testsuite/gcc.dg/uninit-6.c index 009e124fccf..b0f2083ab4b 100644 --- a/gcc/testsuite/gcc.dg/uninit-6.c +++ b/gcc/testsuite/gcc.dg/uninit-6.c @@ -39,7 +39,7 @@ make_something(int a, int b, int c) rv = malloc (sizeof (struct tree)); rv->car = 0; - APPEND(rv, field, INTEGER_T, a); /* { dg-bogus "field" "uninitialized variable warning" } */ + APPEND(rv, field, INTEGER_T, a); /* { dg-bogus "field" "uninitialized variable warning" { xfail *-*-* } } */ APPEND(rv, field, PTR_T, b); APPEND(rv, field, INTEGER_T, c); diff --git a/gcc/testsuite/gcc.dg/uninit-pr40943.c b/gcc/testsuite/gcc.dg/uninit-pr40943.c new file mode 100644 index 00000000000..2b6e9131cb1 --- /dev/null +++ b/gcc/testsuite/gcc.dg/uninit-pr40943.c @@ -0,0 +1,10 @@ +/* PR middle-end/40943 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -Wuninitialized" } */ + +void +foo (void) +{ + int *p; + *p = 3; /* { dg-warning "is used uninitialized" } */ +} diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index 504491040b4..28da94bb21c 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -1265,7 +1265,12 @@ warn_uninitialized_var (tree *tp, int *walk_subtrees, void *data_) /* We do not care about LHS. */ if (wi->is_lhs) - return NULL_TREE; + { + /* Except for operands of INDIRECT_REF. */ + if (!INDIRECT_REF_P (t)) + return NULL_TREE; + t = TREE_OPERAND (t, 0); + } switch (TREE_CODE (t)) { |

