aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernd Schmidt <bernds@codesourcery.com>2010-06-30 14:16:28 +0000
committerBernd Schmidt <bernds@gcc.gnu.org>2010-06-30 14:16:28 +0000
commitdcad005d5078d4d02963c27920a0810469d7d0f2 (patch)
treea5c67dd771a3e990f38004d48afabb3d4131a938
parent1d468b06b93557dedbb74e130a4b7b830876038d (diff)
downloadgcc-dcad005d5078d4d02963c27920a0810469d7d0f2.zip
gcc-dcad005d5078d4d02963c27920a0810469d7d0f2.tar.gz
gcc-dcad005d5078d4d02963c27920a0810469d7d0f2.tar.bz2
re PR tree-optimization/39799 (missing 'may be used uninitialized' warning)
PR tree-optimization/39799 * 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. From-SVN: r161605
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/c-c++-common/uninit-17.c25
-rw-r--r--gcc/tree-inline.c1
4 files changed, 37 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4603e24..4ee0756 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 90c5be0..ddc100b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..b895ac7
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/uninit-17.c
@@ -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);
+}
+
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index 3aa5f7c..f1470d7 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -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))