OSDN Git Service

PR middle-end/40943
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 3 Aug 2009 19:26:10 +0000 (19:26 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 3 Aug 2009 19:26:10 +0000 (19:26 +0000)
* 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

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/uninit-6-O0.c
gcc/testsuite/gcc.dg/uninit-6.c
gcc/testsuite/gcc.dg/uninit-pr40943.c [new file with mode: 0644]
gcc/tree-ssa.c

index 04816e3..4d9d516 100644 (file)
@@ -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
index 26560b5..e2b141c 100644 (file)
@@ -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
index f458830..e3fefe5 100644 (file)
@@ -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);
 
index 009e124..b0f2083 100644 (file)
@@ -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 (file)
index 0000000..2b6e913
--- /dev/null
@@ -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" } */
+}
index 5044910..28da94b 100644 (file)
@@ -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))
     {