Commit 1768a052 by Jakub Jelinek Committed by Jakub Jelinek

re PR middle-end/40943 (Uninitialized warning is missed when dereferencing uninitialized pointers)

	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.

From-SVN: r150379
parent 239bca9d
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> 2009-08-03 Uros Bizjak <ubizjak@gmail.com>
* config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
......
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> 2009-08-03 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
PR testsuite/40858 PR testsuite/40858
......
...@@ -39,7 +39,7 @@ make_something(int a, int b, int c) ...@@ -39,7 +39,7 @@ make_something(int a, int b, int c)
rv = malloc (sizeof (struct tree)); rv = malloc (sizeof (struct tree));
rv->car = 0; 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, PTR_T, b);
APPEND(rv, field, INTEGER_T, c); APPEND(rv, field, INTEGER_T, c);
......
...@@ -39,7 +39,7 @@ make_something(int a, int b, int c) ...@@ -39,7 +39,7 @@ make_something(int a, int b, int c)
rv = malloc (sizeof (struct tree)); rv = malloc (sizeof (struct tree));
rv->car = 0; 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, PTR_T, b);
APPEND(rv, field, INTEGER_T, c); APPEND(rv, field, INTEGER_T, c);
......
/* PR middle-end/40943 */
/* { dg-do compile } */
/* { dg-options "-O2 -Wuninitialized" } */
void
foo (void)
{
int *p;
*p = 3; /* { dg-warning "is used uninitialized" } */
}
...@@ -1265,7 +1265,12 @@ warn_uninitialized_var (tree *tp, int *walk_subtrees, void *data_) ...@@ -1265,7 +1265,12 @@ warn_uninitialized_var (tree *tp, int *walk_subtrees, void *data_)
/* We do not care about LHS. */ /* We do not care about LHS. */
if (wi->is_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)) switch (TREE_CODE (t))
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment