From: Jan Hubicka Date: Fri, 3 Sep 2010 09:58:21 +0000 (+0200) Subject: passes.c (rest_of_decl_compilation): Do not add local vars into varpol. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a482b1f5f45fbd54fce4098d4e03958d1457a310;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d313703e62a..5e24826a544 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2010-09-03 Jan Hubicka + + * 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 PR debug/45500 diff --git a/gcc/passes.c b/gcc/passes.c index 4823c6397c2..88da9b35632 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 dcf3518db63..817a3197901 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