OSDN Git Service

PR tree-optimization/39799
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 30 Jun 2010 14:16:28 +0000 (14:16 +0000)
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 30 Jun 2010 14:16:28 +0000 (14:16 +0000)
* tree-inline.c (remap_ssa_name): Initialize variable only if
SSA_NAME_OCCURS_IN_ABNORMAL_PHI.

testsuite/
PR tree-optimization/39799
* c-c++-common/uninit-17.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@161605 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/uninit-17.c [new file with mode: 0644]
gcc/tree-inline.c

index 4603e24..4ee0756 100644 (file)
@@ -1,3 +1,9 @@
+2010-06-30  Bernd Schmidt  <bernds@codesourcery.com>
+
+       PR tree-optimization/39799
+       * tree-inline.c (remap_ssa_name): Initialize variable only if
+       SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
+
 2010-06-30  Nathan Froyd  <froydnj@codesourcery.com>
 
        * c-parser.c (c_parser_omp_for_loop): Use a VEC for for_block.
index 90c5be0..ddc100b 100644 (file)
@@ -1,3 +1,8 @@
+2010-06-30  Bernd Schmidt  <bernds@codesourcery.com>
+
+       PR tree-optimization/39799
+       * c-c++-common/uninit-17.c: New test.
+
 2010-06-29  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR libfortran/43298
diff --git a/gcc/testsuite/c-c++-common/uninit-17.c b/gcc/testsuite/c-c++-common/uninit-17.c
new file mode 100644 (file)
index 0000000..b895ac7
--- /dev/null
@@ -0,0 +1,25 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -Wuninitialized" } */
+
+inline int foo(int x)
+{
+  return x;
+}
+static void bar(int a, int *ptr)
+{
+  do
+  {
+    int b; /* { dg-message "note: 'b' was declared here" } */
+    if (b < 40) {
+      ptr[0] = b; /* { dg-warning "may be used uninitialized" } */
+    }
+    b += 1;
+    ptr++;
+  }
+  while (--a != 0);
+}
+void foobar(int a, int *ptr)
+{
+  bar(foo(a), ptr);
+}
+
index 3aa5f7c..f1470d7 100644 (file)
@@ -234,6 +234,7 @@ remap_ssa_name (tree name, copy_body_data *id)
             regions of the CFG, but this is expensive to test.  */
          if (id->entry_bb
              && is_gimple_reg (SSA_NAME_VAR (name))
+             && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (name)
              && TREE_CODE (SSA_NAME_VAR (name)) != PARM_DECL
              && (id->entry_bb != EDGE_SUCC (ENTRY_BLOCK_PTR, 0)->dest
                  || EDGE_COUNT (id->entry_bb->preds) != 1))