re PR middle-end/43391 (make_decl_rtl failure for C++ on AIX and HPUX)
PR middle-end/43391 * varasm.c (make_decl_rtl): Deal with COMMON flag to make notice_global_symbol work. From-SVN: r157773
This commit is contained in:
parent
5a9c8a1bb7
commit
a9deb2560c
2 changed files with 17 additions and 8 deletions
|
@ -1,3 +1,9 @@
|
|||
2010-03-27 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
PR middle-end/43391
|
||||
* varasm.c (make_decl_rtl): Deal with COMMON flag to make
|
||||
notice_global_symbol work.
|
||||
|
||||
2010-03-27 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* dwarf2out.c (dwarf2_debug_hooks): Use dwarf2out_function_decl
|
||||
|
|
19
gcc/varasm.c
19
gcc/varasm.c
|
@ -1435,16 +1435,19 @@ make_decl_rtl (tree decl)
|
|||
|
||||
/* Specifying a section attribute on a variable forces it into a
|
||||
non-.bss section, and thus it cannot be common. */
|
||||
gcc_assert (!(TREE_CODE (decl) == VAR_DECL
|
||||
&& DECL_SECTION_NAME (decl) != NULL_TREE
|
||||
&& DECL_INITIAL (decl) == NULL_TREE
|
||||
&& DECL_COMMON (decl))
|
||||
|| !DECL_COMMON (decl));
|
||||
/* FIXME: In general this code should not be necessary because
|
||||
visibility pass is doing the same work. But notice_global_symbol
|
||||
is called early and it needs to make DECL_RTL to get the name.
|
||||
we take care of recomputing the DECL_RTL after visibility is changed. */
|
||||
if (TREE_CODE (decl) == VAR_DECL
|
||||
&& DECL_SECTION_NAME (decl) != NULL_TREE
|
||||
&& DECL_INITIAL (decl) == NULL_TREE
|
||||
&& DECL_COMMON (decl))
|
||||
DECL_COMMON (decl) = 0;
|
||||
|
||||
/* Variables can't be both common and weak. */
|
||||
gcc_assert (TREE_CODE (decl) != VAR_DECL
|
||||
|| !DECL_WEAK (decl)
|
||||
|| !DECL_COMMON (decl));
|
||||
if (TREE_CODE (decl) == VAR_DECL && DECL_WEAK (decl))
|
||||
DECL_COMMON (decl) = 0;
|
||||
|
||||
if (use_object_blocks_p () && use_blocks_for_decl_p (decl))
|
||||
x = create_block_symbol (name, get_block_for_decl (decl), -1);
|
||||
|
|
Loading…
Add table
Reference in a new issue