This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Remove ASM_OUTPUT_BSS macro.


2011/4/6 Anatoly Sokolov <aesok@post.ru>:
> Hi.
>
> ?No one back end does not use ASM_OUTPUT_BSS macro now, this patch remove it.
> The GCC have more flexible ASM_OUTPUT_ALIGNED_BSS macro.
>
> ?The patch has been bootstrapped on and regression tested on
> x86_64-unknown-linux-gnu for c.
>
> ?OK to install?

Ok.

Thanks,
Richard.

> ? ? ? ?* doc/tm.texi.in (ASM_OUTPUT_BSS): Remove documentation.
> ? ? ? ?(BSS_SECTION_ASM_OP, ASM_OUTPUT_ALIGNED_BSS): Update documentation.
> ? ? ? ?* doc/tm.texi: Regenerate.
> ? ? ? ?* system.h (ASM_OUTPUT_BSS): Poison.
> ? ? ? ?* varasm.c (asm_output_bss): Remove function.
> ? ? ? ?(emit_bss, init_varasm_once): Don't use ASM_OUTPUT_BSS macro.
>
> ? ? ? ?* config/frv/frv.h (BSS_SECTION_ASM_OP): Remove comment.
> ? ? ? ?* config/frv/fr30.h (BSS_SECTION_ASM_OP): Likewise.
> ? ? ? ?* config/i386/djgpp.h (BSS_SECTION_ASM_OP): Likewise.
> ? ? ? ?* config/i386/i386elf.h (BSS_SECTION_ASM_OP, ASM_OUTPUT_ALIGNED_BSS):
> ? ? ? ?Likewise.
> ? ? ? ?* config/sh/sh.h (BSS_SECTION_ASM_OP, ASM_OUTPUT_ALIGNED_BSS):
> ? ? ? ?Likewise.
> ? ? ? ?* config/m68k/m68kelf.h (BSS_SECTION_ASM_OP, ASM_OUTPUT_ALIGNED_BSS):
> ? ? ? ?Likewise.
> ? ? ? ?* config/m68k/netbsd-elf.h (ASM_OUTPUT_ALIGNED_BSS): Likewise.
>
>
> Index: gcc/doc/tm.texi
> ===================================================================
> --- gcc/doc/tm.texi ? ? (revision 172058)
> +++ gcc/doc/tm.texi ? ? (working copy)
> @@ -6821,8 +6821,8 @@
> ?@defmac BSS_SECTION_ASM_OP
> ?If defined, a C expression whose value is a string, including spacing,
> ?containing the assembler operation to identify the following data as
> -uninitialized global data. ?If not defined, and neither
> -@code{ASM_OUTPUT_BSS} nor @code{ASM_OUTPUT_ALIGNED_BSS} are defined,
> +uninitialized global data. ?If not defined, and
> +@code{ASM_OUTPUT_ALIGNED_BSS} not defined,
> ?uninitialized global data will be output in the data section if
> ?@option{-fno-common} is passed, otherwise @code{ASM_OUTPUT_COMMON} will be
> ?used.
> @@ -7598,20 +7598,19 @@
> ?the variable's decl in order to chose what to output.
> ?@end defmac
>
> -@defmac ASM_OUTPUT_BSS (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{rounded})
> +@defmac ASM_OUTPUT_ALIGNED_BSS (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment})
> ?A C statement (sans semicolon) to output to the stdio stream
> ?@var{stream} the assembler definition of uninitialized global @var{decl} named
> -@var{name} whose size is @var{size} bytes. ?The variable @var{rounded}
> -is the size rounded up to whatever alignment the caller wants.
> +@var{name} whose size is @var{size} bytes. ?The variable @var{alignment}
> +is the alignment specified as the number of bits.
>
> -Try to use function @code{asm_output_bss} defined in @file{varasm.c} when
> -defining this macro. ?If unable, use the expression
> +Try to use function @code{asm_output_aligned_bss} defined in file
> +@file{varasm.c} when defining this macro. ?If unable, use the expression
> ?@code{assemble_name (@var{stream}, @var{name})} to output the name itself;
> ?before and after that, output the additional assembler syntax for defining
> ?the name, and a newline.
>
> -There are two ways of handling global BSS@. ?One is to define either
> -this macro or its aligned counterpart, @code{ASM_OUTPUT_ALIGNED_BSS}.
> +There are two ways of handling global BSS@. ?One is to define this macro.
> ?The other is to have @code{TARGET_ASM_SELECT_SECTION} return a
> ?switchable BSS section (@pxref{TARGET_HAVE_SWITCHABLE_BSS_SECTIONS}).
> ?You do not need to do both.
> @@ -7623,17 +7622,6 @@
> ?common in order to save space in the object file.
> ?@end defmac
>
> -@defmac ASM_OUTPUT_ALIGNED_BSS (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment})
> -Like @code{ASM_OUTPUT_BSS} except takes the required alignment as a
> -separate, explicit argument. ?If you define this macro, it is used in
> -place of @code{ASM_OUTPUT_BSS}, and gives you more flexibility in
> -handling the required alignment of the variable. ?The alignment is specified
> -as the number of bits.
> -
> -Try to use function @code{asm_output_aligned_bss} defined in file
> -@file{varasm.c} when defining this macro.
> -@end defmac
> -
> ?@defmac ASM_OUTPUT_LOCAL (@var{stream}, @var{name}, @var{size}, @var{rounded})
> ?A C statement (sans semicolon) to output to the stdio stream
> ?@var{stream} the assembler definition of a local-common-label named
> Index: gcc/doc/tm.texi.in
> ===================================================================
> --- gcc/doc/tm.texi.in ?(revision 172058)
> +++ gcc/doc/tm.texi.in ?(working copy)
> @@ -6799,8 +6799,8 @@
> ?@defmac BSS_SECTION_ASM_OP
> ?If defined, a C expression whose value is a string, including spacing,
> ?containing the assembler operation to identify the following data as
> -uninitialized global data. ?If not defined, and neither
> -@code{ASM_OUTPUT_BSS} nor @code{ASM_OUTPUT_ALIGNED_BSS} are defined,
> +uninitialized global data. ?If not defined, and
> +@code{ASM_OUTPUT_ALIGNED_BSS} not defined,
> ?uninitialized global data will be output in the data section if
> ?@option{-fno-common} is passed, otherwise @code{ASM_OUTPUT_COMMON} will be
> ?used.
> @@ -7564,20 +7564,19 @@
> ?the variable's decl in order to chose what to output.
> ?@end defmac
>
> -@defmac ASM_OUTPUT_BSS (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{rounded})
> +@defmac ASM_OUTPUT_ALIGNED_BSS (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment})
> ?A C statement (sans semicolon) to output to the stdio stream
> ?@var{stream} the assembler definition of uninitialized global @var{decl} named
> -@var{name} whose size is @var{size} bytes. ?The variable @var{rounded}
> -is the size rounded up to whatever alignment the caller wants.
> +@var{name} whose size is @var{size} bytes. ?The variable @var{alignment}
> +is the alignment specified as the number of bits.
>
> -Try to use function @code{asm_output_bss} defined in @file{varasm.c} when
> -defining this macro. ?If unable, use the expression
> +Try to use function @code{asm_output_aligned_bss} defined in file
> +@file{varasm.c} when defining this macro. ?If unable, use the expression
> ?@code{assemble_name (@var{stream}, @var{name})} to output the name itself;
> ?before and after that, output the additional assembler syntax for defining
> ?the name, and a newline.
>
> -There are two ways of handling global BSS@. ?One is to define either
> -this macro or its aligned counterpart, @code{ASM_OUTPUT_ALIGNED_BSS}.
> +There are two ways of handling global BSS@. ?One is to define this macro.
> ?The other is to have @code{TARGET_ASM_SELECT_SECTION} return a
> ?switchable BSS section (@pxref{TARGET_HAVE_SWITCHABLE_BSS_SECTIONS}).
> ?You do not need to do both.
> @@ -7589,17 +7588,6 @@
> ?common in order to save space in the object file.
> ?@end defmac
>
> -@defmac ASM_OUTPUT_ALIGNED_BSS (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment})
> -Like @code{ASM_OUTPUT_BSS} except takes the required alignment as a
> -separate, explicit argument. ?If you define this macro, it is used in
> -place of @code{ASM_OUTPUT_BSS}, and gives you more flexibility in
> -handling the required alignment of the variable. ?The alignment is specified
> -as the number of bits.
> -
> -Try to use function @code{asm_output_aligned_bss} defined in file
> -@file{varasm.c} when defining this macro.
> -@end defmac
> -
> ?@defmac ASM_OUTPUT_LOCAL (@var{stream}, @var{name}, @var{size}, @var{rounded})
> ?A C statement (sans semicolon) to output to the stdio stream
> ?@var{stream} the assembler definition of a local-common-label named
> Index: gcc/varasm.c
> ===================================================================
> --- gcc/varasm.c ? ? ? ?(revision 172058)
> +++ gcc/varasm.c ? ? ? ?(working copy)
> @@ -121,10 +121,6 @@
> ?static void globalize_decl (tree);
> ?static bool decl_readonly_section_1 (enum section_category);
> ?#ifdef BSS_SECTION_ASM_OP
> -#ifdef ASM_OUTPUT_BSS
> -static void asm_output_bss (FILE *, tree, const char *,
> - ? ? ? ? ? ? ? ? ? ? ? ? ? unsigned HOST_WIDE_INT, unsigned HOST_WIDE_INT);
> -#endif
> ?#ifdef ASM_OUTPUT_ALIGNED_BSS
> ?static void asm_output_aligned_bss (FILE *, tree, const char *,
> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?unsigned HOST_WIDE_INT, int)
> @@ -427,34 +423,6 @@
>
> ?#ifdef BSS_SECTION_ASM_OP
>
> -#ifdef ASM_OUTPUT_BSS
> -
> -/* Utility function for ASM_OUTPUT_BSS for targets to use if
> - ? they don't support alignments in .bss.
> - ? ??? It is believed that this function will work in most cases so such
> - ? support is localized here. ?*/
> -
> -static void ATTRIBUTE_UNUSED
> -asm_output_bss (FILE *file, tree decl ATTRIBUTE_UNUSED,
> - ? ? ? ? ? ? ? const char *name,
> - ? ? ? ? ? ? ? unsigned HOST_WIDE_INT size ATTRIBUTE_UNUSED,
> - ? ? ? ? ? ? ? unsigned HOST_WIDE_INT rounded)
> -{
> - ?gcc_assert (strcmp (XSTR (XEXP (DECL_RTL (decl), 0), 0), name) == 0);
> - ?targetm.asm_out.globalize_decl_name (file, decl);
> - ?switch_to_section (bss_section);
> -#ifdef ASM_DECLARE_OBJECT_NAME
> - ?last_assemble_variable_decl = decl;
> - ?ASM_DECLARE_OBJECT_NAME (file, name, decl);
> -#else
> - ?/* Standard thing is just output label for the object. ?*/
> - ?ASM_OUTPUT_LABEL (file, name);
> -#endif /* ASM_DECLARE_OBJECT_NAME */
> - ?ASM_OUTPUT_SKIP (file, rounded ? rounded : 1);
> -}
> -
> -#endif
> -
> ?#ifdef ASM_OUTPUT_ALIGNED_BSS
>
> ?/* Utility function for targets to use in implementing
> @@ -1795,7 +1763,7 @@
>
> ?/* A noswitch_section_callback for bss_noswitch_section. ?*/
>
> -#if defined ASM_OUTPUT_ALIGNED_BSS || defined ASM_OUTPUT_BSS
> +#if defined ASM_OUTPUT_ALIGNED_BSS
> ?static bool
> ?emit_bss (tree decl ATTRIBUTE_UNUSED,
> ? ? ? ? ?const char *name ATTRIBUTE_UNUSED,
> @@ -1805,9 +1773,6 @@
> ?#if defined ASM_OUTPUT_ALIGNED_BSS
> ? ASM_OUTPUT_ALIGNED_BSS (asm_out_file, decl, name, size, DECL_ALIGN (decl));
> ? return true;
> -#else
> - ?ASM_OUTPUT_BSS (asm_out_file, decl, name, size, rounded);
> - ?return false;
> ?#endif
> ?}
> ?#endif
> @@ -6004,7 +5969,7 @@
> ? comm_section = get_noswitch_section (SECTION_WRITE | SECTION_BSS
> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | SECTION_COMMON, emit_common);
>
> -#if defined ASM_OUTPUT_ALIGNED_BSS || defined ASM_OUTPUT_BSS
> +#if defined ASM_OUTPUT_ALIGNED_BSS
> ? bss_noswitch_section = get_noswitch_section (SECTION_WRITE | SECTION_BSS,
> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? emit_bss);
> ?#endif
> Index: gcc/system.h
> ===================================================================
> --- gcc/system.h ? ? ? ?(revision 172058)
> +++ gcc/system.h ? ? ? ?(working copy)
> @@ -830,7 +830,7 @@
> ? ? ? ?FUNCTION_ARG_BOUNDARY MUST_USE_SJLJ_EXCEPTIONS US_SOFTWARE_GOFAST ?\
> ? ? ? ?USING_SVR4_H SVR4_ASM_SPEC FUNCTION_ARG FUNCTION_ARG_ADVANCE ? ? ? \
> ? ? ? ?FUNCTION_INCOMING_ARG IRA_COVER_CLASSES TARGET_VERSION ? ? ? ? ? ? \
> - ? ? ? MACHINE_TYPE TARGET_HAS_TARGETCM
> + ? ? ? MACHINE_TYPE TARGET_HAS_TARGETCM ASM_OUTPUT_BSS
>
> ?/* Hooks that are no longer used. ?*/
> ?#pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE ?\
> Index: gcc/config/frv/frv.h
> ===================================================================
> --- gcc/config/frv/frv.h ? ? ? ?(revision 172058)
> +++ gcc/config/frv/frv.h ? ? ? ?(working copy)
> @@ -1574,13 +1574,6 @@
> ? ?`".data"' is right. ?*/
> ?#define DATA_SECTION_ASM_OP "\t.data"
>
> -/* If defined, a C expression whose value is a string containing the
> - ? assembler operation to identify the following data as
> - ? uninitialized global data. ?If not defined, and neither
> - ? `ASM_OUTPUT_BSS' nor `ASM_OUTPUT_ALIGNED_BSS' are defined,
> - ? uninitialized global data will be output in the data section if
> - ? `-fno-common' is passed, otherwise `ASM_OUTPUT_COMMON' will be
> - ? used. ?*/
> ?#define BSS_SECTION_ASM_OP "\t.section .bss,\"aw\""
>
> ?/* Short Data Support */
> Index: gcc/config/i386/djgpp.h
> ===================================================================
> --- gcc/config/i386/djgpp.h ? ? (revision 172058)
> +++ gcc/config/i386/djgpp.h ? ? (working copy)
> @@ -24,13 +24,6 @@
> ?/* Don't assume anything about the header files. ?*/
> ?#define NO_IMPLICIT_EXTERN_C
>
> -/* If defined, a C expression whose value is a string containing the
> - ? assembler operation to identify the following data as
> - ? uninitialized global data. ?If not defined, and neither
> - ? `ASM_OUTPUT_BSS' nor `ASM_OUTPUT_ALIGNED_BSS' are defined,
> - ? uninitialized global data will be output in the data section if
> - ? `-fno-common' is passed, otherwise `ASM_OUTPUT_COMMON' will be
> - ? used. ?*/
> ?#undef BSS_SECTION_ASM_OP
> ?#define BSS_SECTION_ASM_OP "\t.section\t.bss"
>
> Index: gcc/config/i386/i386elf.h
> ===================================================================
> --- gcc/config/i386/i386elf.h ? (revision 172058)
> +++ gcc/config/i386/i386elf.h ? (working copy)
> @@ -100,24 +100,9 @@
> ?/* Switch into a generic section. ?*/
> ?#define TARGET_ASM_NAMED_SECTION ?default_elf_asm_named_section
>
> -/* If defined, a C expression whose value is a string containing the
> - ? assembler operation to identify the following data as
> - ? uninitialized global data. ?If not defined, and neither
> - ? `ASM_OUTPUT_BSS' nor `ASM_OUTPUT_ALIGNED_BSS' are defined,
> - ? uninitialized global data will be output in the data section if
> - ? `-fno-common' is passed, otherwise `ASM_OUTPUT_COMMON' will be
> - ? used. ?*/
> ?#undef BSS_SECTION_ASM_OP
> ?#define BSS_SECTION_ASM_OP "\t.section\t.bss"
>
> -/* Like `ASM_OUTPUT_BSS' except takes the required alignment as a
> - ? separate, explicit argument. ?If you define this macro, it is used
> - ? in place of `ASM_OUTPUT_BSS', and gives you more flexibility in
> - ? handling the required alignment of the variable. ?The alignment is
> - ? specified as the number of bits.
> -
> - ? Try to use function `asm_output_aligned_bss' defined in file
> - ? `varasm.c' when defining this macro. ?*/
> ?#undef ASM_OUTPUT_ALIGNED_BSS
> ?#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
> ? asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
> Index: gcc/config/sh/sh.h
> ===================================================================
> --- gcc/config/sh/sh.h ?(revision 172058)
> +++ gcc/config/sh/sh.h ?(working copy)
> @@ -2113,26 +2113,10 @@
> ?# endif
> ?#endif
>
> -
> -/* If defined, a C expression whose value is a string containing the
> - ? assembler operation to identify the following data as
> - ? uninitialized global data. ?If not defined, and neither
> - ? `ASM_OUTPUT_BSS' nor `ASM_OUTPUT_ALIGNED_BSS' are defined,
> - ? uninitialized global data will be output in the data section if
> - ? `-fno-common' is passed, otherwise `ASM_OUTPUT_COMMON' will be
> - ? used. ?*/
> ?#ifndef BSS_SECTION_ASM_OP
> ?#define BSS_SECTION_ASM_OP ? ? "\t.section\t.bss"
> ?#endif
>
> -/* Like `ASM_OUTPUT_BSS' except takes the required alignment as a
> - ? separate, explicit argument. ?If you define this macro, it is used
> - ? in place of `ASM_OUTPUT_BSS', and gives you more flexibility in
> - ? handling the required alignment of the variable. ?The alignment is
> - ? specified as the number of bits.
> -
> - ? Try to use function `asm_output_aligned_bss' defined in file
> - ? `varasm.c' when defining this macro. ?*/
> ?#ifndef ASM_OUTPUT_ALIGNED_BSS
> ?#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
> ? asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
> Index: gcc/config/fr30/fr30.h
> ===================================================================
> --- gcc/config/fr30/fr30.h ? ? ?(revision 172058)
> +++ gcc/config/fr30/fr30.h ? ? ?(working copy)
> @@ -702,13 +702,6 @@
> ? ?`".data"' is right. ?*/
> ?#define DATA_SECTION_ASM_OP "\t.data"
>
> -/* If defined, a C expression whose value is a string containing the
> - ? assembler operation to identify the following data as
> - ? uninitialized global data. ?If not defined, and neither
> - ? `ASM_OUTPUT_BSS' nor `ASM_OUTPUT_ALIGNED_BSS' are defined,
> - ? uninitialized global data will be output in the data section if
> - ? `-fno-common' is passed, otherwise `ASM_OUTPUT_COMMON' will be
> - ? used. ?*/
> ?#define BSS_SECTION_ASM_OP "\t.section .bss"
>
> ?/*}}}*/
> Index: gcc/config/m68k/m68kelf.h
> ===================================================================
> --- gcc/config/m68k/m68kelf.h ? (revision 172058)
> +++ gcc/config/m68k/m68kelf.h ? (working copy)
> @@ -139,25 +139,10 @@
> ?#undef STARTFILE_SPEC
> ?#define STARTFILE_SPEC "crtbegin.o%s"
>
> -/* If defined, a C expression whose value is a string containing the
> - ? assembler operation to identify the following data as
> - ? uninitialized global data. ?If not defined, and neither
> - ? `ASM_OUTPUT_BSS' nor `ASM_OUTPUT_ALIGNED_BSS' are defined,
> - ? uninitialized global data will be output in the data section if
> - ? `-fno-common' is passed, otherwise `ASM_OUTPUT_COMMON' will be
> - ? used. ?*/
> ?#ifndef BSS_SECTION_ASM_OP
> ?#define BSS_SECTION_ASM_OP ? ? "\t.section\t.bss"
> ?#endif
>
> -/* Like `ASM_OUTPUT_BSS' except takes the required alignment as a
> - ? separate, explicit argument. ?If you define this macro, it is used
> - ? in place of `ASM_OUTPUT_BSS', and gives you more flexibility in
> - ? handling the required alignment of the variable. ?The alignment is
> - ? specified as the number of bits.
> -
> - ? Try to use function `asm_output_aligned_bss' defined in file
> - ? `varasm.c' when defining this macro. ?*/
> ?#ifndef ASM_OUTPUT_ALIGNED_BSS
> ?#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
> ? asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
> Index: gcc/config/m68k/netbsd-elf.h
> ===================================================================
> --- gcc/config/m68k/netbsd-elf.h ? ? ? ?(revision 172058)
> +++ gcc/config/m68k/netbsd-elf.h ? ? ? ?(working copy)
> @@ -171,15 +171,6 @@
> ?#define BSS_SECTION_ASM_OP ? ? ".section\t.bss"
>
>
> -/* Like `ASM_OUTPUT_BSS' except takes the required alignment as a
> - ? separate, explicit argument. ?If you define this macro, it is used
> - ? in place of `ASM_OUTPUT_BSS', and gives you more flexibility in
> - ? handling the required alignment of the variable. ?The alignment is
> - ? specified as the number of bits.
> -
> - ? Try to use function `asm_output_aligned_bss' defined in file
> - ? `varasm.c' when defining this macro. ?*/
> -
> ?#undef ASM_OUTPUT_ALIGNED_BSS
> ?#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) ? ? ? ? ?\
> ? asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
>
>
> Anatoly.
>
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]