aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-sra.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2009-02-18 16:01:03 -0500
committerJason Merrill <jason@gcc.gnu.org>2009-02-18 16:01:03 -0500
commit98b806924df9a7bb913cc5cc2d2e7fdc7e2a5de0 (patch)
tree0f64524f372d342649161f19523537146008f861 /gcc/tree-sra.c
parent1e80963d6176df27cd61f268ec14392cda8a309a (diff)
downloadgcc-98b806924df9a7bb913cc5cc2d2e7fdc7e2a5de0.zip
gcc-98b806924df9a7bb913cc5cc2d2e7fdc7e2a5de0.tar.gz
gcc-98b806924df9a7bb913cc5cc2d2e7fdc7e2a5de0.tar.bz2
re PR target/39179 (Wrong code in c++ for const members initialized in external file)
PR target/39179 * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero value if DECL_EXTERNAL. * tree-sra.c (sra_walk_gimple_assign): Likewise. * target.h (gcc_target::binds_local_p): Clarify module. * tree.h (TREE_PUBLIC): Clarify module. From-SVN: r144270
Diffstat (limited to 'gcc/tree-sra.c')
-rw-r--r--gcc/tree-sra.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c
index 01c0e12..abcca2b 100644
--- a/gcc/tree-sra.c
+++ b/gcc/tree-sra.c
@@ -1008,6 +1008,7 @@ sra_walk_gimple_assign (gimple stmt, gimple_stmt_iterator *gsi,
we'd been passed the constructor directly. Invoke INIT. */
else if (TREE_CODE (rhs) == VAR_DECL
&& TREE_STATIC (rhs)
+ && !DECL_EXTERNAL (rhs)
&& TREE_READONLY (rhs)
&& targetm.binds_local_p (rhs))
fns->init (lhs_elt, DECL_INITIAL (rhs), gsi);