varasm.c (assemble_variable): Use assemble_zeros for zero-initialized variables.
* varasm.c (assemble_variable): Use assemble_zeros for zero-initialized variables. (categorize_decl_for_section): Honor flag_zero_initialized_in_bss for SECCAT_BSS and SECCAT_TBSS. Co-Authored-By: Richard Henderson <rth@redhat.com> From-SVN: r84271
This commit is contained in:
parent
78a47b1d2e
commit
08a8c6b65b
@ -1,9 +1,17 @@
|
||||
2004-07-06 Jan Beulich <jbeulich@novell.com>
|
||||
2004-07-07 Jan Beulich <jbeulich@novell.com>
|
||||
Richard Henderson <rth@redhat.com>
|
||||
|
||||
* varasm.c (assemble_variable): Use assemble_zeros for
|
||||
zero-initialized variables.
|
||||
(categorize_decl_for_section): Honor flag_zero_initialized_in_bss
|
||||
for SECCAT_BSS and SECCAT_TBSS.
|
||||
|
||||
2004-07-07 Jan Beulich <jbeulich@novell.com>
|
||||
|
||||
* varasm.c (asm_output_bss): Don't declare unless BSS_SECTION_ASM_OP.
|
||||
|
||||
* expmed.c (emit_store_flag): Also special-case double-word
|
||||
(in-)equality comparison against -1.
|
||||
|
||||
* expmed.c (emit_store_flag): Also special-case double-word
|
||||
(in-)equality comparison against -1.
|
||||
|
||||
* config/i386/i386.c (ix86_gimplify_va_arg): Don't need temporary for
|
||||
passing arguments the containers for which are registers.
|
||||
|
16
gcc/varasm.c
16
gcc/varasm.c
@ -1563,7 +1563,9 @@ assemble_variable (tree decl, int top_level ATTRIBUTE_UNUSED,
|
||||
|
||||
if (!dont_output_data)
|
||||
{
|
||||
if (DECL_INITIAL (decl) && DECL_INITIAL (decl) != error_mark_node)
|
||||
if (DECL_INITIAL (decl)
|
||||
&& DECL_INITIAL (decl) != error_mark_node
|
||||
&& !initializer_zerop (DECL_INITIAL (decl)))
|
||||
/* Output the actual data. */
|
||||
output_constant (DECL_INITIAL (decl),
|
||||
tree_low_cst (DECL_SIZE_UNIT (decl), 1),
|
||||
@ -4611,7 +4613,11 @@ categorize_decl_for_section (tree decl, int reloc, int shlib)
|
||||
else if (TREE_CODE (decl) == VAR_DECL)
|
||||
{
|
||||
if (DECL_INITIAL (decl) == NULL
|
||||
|| DECL_INITIAL (decl) == error_mark_node)
|
||||
|| DECL_INITIAL (decl) == error_mark_node
|
||||
|| (flag_zero_initialized_in_bss
|
||||
/* Leave constant zeroes in .rodata so they can be shared. */
|
||||
&& !TREE_READONLY (decl)
|
||||
&& initializer_zerop (DECL_INITIAL (decl))))
|
||||
ret = SECCAT_BSS;
|
||||
else if (! TREE_READONLY (decl)
|
||||
|| TREE_SIDE_EFFECTS (decl)
|
||||
@ -4653,7 +4659,11 @@ categorize_decl_for_section (tree decl, int reloc, int shlib)
|
||||
/* There are no read-only thread-local sections. */
|
||||
if (TREE_CODE (decl) == VAR_DECL && DECL_THREAD_LOCAL (decl))
|
||||
{
|
||||
if (ret == SECCAT_BSS)
|
||||
/* Note that this would be *just* SECCAT_BSS, except that there's
|
||||
no concept of a read-only thread-local-data section. */
|
||||
if (ret == SECCAT_BSS
|
||||
|| (flag_zero_initialized_in_bss
|
||||
&& initializer_zerop (DECL_INITIAL (decl))))
|
||||
ret = SECCAT_TBSS;
|
||||
else
|
||||
ret = SECCAT_TDATA;
|
||||
|
Loading…
Reference in New Issue
Block a user