diff options
author | Jan Hubicka <jh@suse.cz> | 2010-09-03 11:58:21 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2010-09-03 09:58:21 +0000 |
commit | a482b1f5f45fbd54fce4098d4e03958d1457a310 (patch) | |
tree | 1a0056a61f675aa9f60f5f9ea43861c09f244e5f | |
parent | 2f757e4a8b6357445614fe51c4ff394fb13be173 (diff) | |
download | gcc-a482b1f5f45fbd54fce4098d4e03958d1457a310.zip gcc-a482b1f5f45fbd54fce4098d4e03958d1457a310.tar.gz gcc-a482b1f5f45fbd54fce4098d4e03958d1457a310.tar.bz2 |
passes.c (rest_of_decl_compilation): Do not add local vars into varpol.
* passes.c (rest_of_decl_compilation): Do not add local vars into varpol.
* varpool.c (varpool_get_node, varpool_node): Sanity check that only
static or extern vars are in varpool.
(varpool_finalize_decl): Sanity check that only static vars are finalized.
From-SVN: r163804
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/passes.c | 3 | ||||
-rw-r--r-- | gcc/varpool.c | 8 |
3 files changed, 15 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d313703..5e24826 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2010-09-03 Jan Hubicka <jh@suse.cz> + + * passes.c (rest_of_decl_compilation): Do not add local vars into varpol. + * varpool.c (varpool_get_node, varpool_node): Sanity check that only + static or extern vars are in varpool. + (varpool_finalize_decl): Sanity check that only static vars are finalized. + 2010-09-03 Jakub Jelinek <jakub@redhat.com> PR debug/45500 diff --git a/gcc/passes.c b/gcc/passes.c index 4823c63..88da9b3 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -219,7 +219,8 @@ rest_of_decl_compilation (tree decl, /* Let cgraph know about the existence of variables. */ if (in_lto_p && !at_end) ; - else if (TREE_CODE (decl) == VAR_DECL && !DECL_EXTERNAL (decl)) + else if (TREE_CODE (decl) == VAR_DECL && !DECL_EXTERNAL (decl) + && TREE_STATIC (decl)) varpool_node (decl); } diff --git a/gcc/varpool.c b/gcc/varpool.c index dcf3518..817a319 100644 --- a/gcc/varpool.c +++ b/gcc/varpool.c @@ -111,7 +111,8 @@ varpool_get_node (tree decl) { struct varpool_node key, **slot; - gcc_assert (DECL_P (decl) && TREE_CODE (decl) != FUNCTION_DECL); + gcc_assert (TREE_CODE (decl) == VAR_DECL + && (TREE_STATIC (decl) || DECL_EXTERNAL (decl))); if (!varpool_hash) return NULL; @@ -129,7 +130,8 @@ varpool_node (tree decl) { struct varpool_node key, *node, **slot; - gcc_assert (DECL_P (decl) && TREE_CODE (decl) != FUNCTION_DECL); + gcc_assert (TREE_CODE (decl) == VAR_DECL + && (TREE_STATIC (decl) || DECL_EXTERNAL (decl))); if (!varpool_hash) varpool_hash = htab_create_ggc (10, hash_varpool_node, @@ -365,6 +367,8 @@ varpool_finalize_decl (tree decl) { struct varpool_node *node = varpool_node (decl); + gcc_assert (TREE_STATIC (decl)); + /* The first declaration of a variable that comes through this function decides whether it is global (in C, has external linkage) or local (in C, has internal linkage). So do nothing more |