From 2e6614510ab3fb9b079986ea25e4b04363dcc7d0 Mon Sep 17 00:00:00 2001 From: bernds Date: Wed, 30 Jun 2010 14:16:28 +0000 Subject: [PATCH] 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@161605 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/c-c++-common/uninit-17.c | 25 +++++++++++++++++++++++++ gcc/tree-inline.c | 1 + 4 files changed, 37 insertions(+) create mode 100644 gcc/testsuite/c-c++-common/uninit-17.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4603e24b1a0..4ee0756b6f9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-06-30 Bernd Schmidt + + 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 * 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 90c5be0e824..ddc100b8169 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-06-30 Bernd Schmidt + + PR tree-optimization/39799 + * c-c++-common/uninit-17.c: New test. + 2010-06-29 Jerry DeLisle 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 00000000000..b895ac7dcd9 --- /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 3aa5f7c5baa..f1470d7a384 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)) -- 2.11.0