From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14662 invoked by alias); 25 Jul 2015 02:37:31 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 14382 invoked by uid 89); 25 Jul 2015 02:37:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00,KAM_LAZY_DOMAIN_SECURITY autolearn=no version=3.3.2 X-HELO: eggs.gnu.org Received: from eggs.gnu.org (HELO eggs.gnu.org) (208.118.235.92) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Sat, 25 Jul 2015 02:37:21 +0000 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZIpKu-0000gP-1b for gcc-patches@gcc.gnu.org; Fri, 24 Jul 2015 22:37:19 -0400 Received: from tbsaunde.org ([66.228.47.254]:46074 helo=paperclip.tbsaunde.org) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZIpKt-0000fn-UN for gcc-patches@gcc.gnu.org; Fri, 24 Jul 2015 22:37:15 -0400 Received: from iceball.corp.tor1.mozilla.com (unknown [66.207.208.102]) by paperclip.tbsaunde.org (Postfix) with ESMTPSA id 56FA0C0D4 for ; Sat, 25 Jul 2015 02:37:13 +0000 (UTC) From: tbsaunde+gcc@tbsaunde.org To: gcc-patches@gcc.gnu.org Subject: [PATCH 4/4] define ASM_OUTPUT_LABEL to the name of a function Date: Sat, 25 Jul 2015 05:42:00 -0000 Message-Id: <1437791820-17927-5-git-send-email-tbsaunde+gcc@tbsaunde.org> In-Reply-To: <1437791820-17927-1-git-send-email-tbsaunde+gcc@tbsaunde.org> References: <1437791820-17927-1-git-send-email-tbsaunde+gcc@tbsaunde.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 66.228.47.254 X-IsSubscribed: yes X-SW-Source: 2015-07/txt/msg02145.txt.bz2 From: Trevor Saunders * config/arc/arc.h, config/bfin/bfin.h, config/frv/frv.h, config/ia64/ia64-protos.h, config/ia64/ia64.c, config/ia64/ia64.h, config/lm32/lm32.h, config/mep/mep.h, config/mmix/mmix.h, config/rs6000/rs6000.c, config/rs6000/xcoff.h, config/spu/spu.h, config/visium/visium.h, defaults.h: Define ASM_OUTPUT_LABEL to the name of a function. * output.h (default_output_label): New prototype. * varasm.c (default_output_label): New function. * vmsdbgout.c: Include tm_p.h. * xcoffout.c: Likewise. --- gcc/config/arc/arc.h | 3 +-- gcc/config/bfin/bfin.h | 5 +---- gcc/config/frv/frv.h | 6 +----- gcc/config/ia64/ia64-protos.h | 1 + gcc/config/ia64/ia64.c | 11 +++++++++++ gcc/config/ia64/ia64.h | 8 +------- gcc/config/lm32/lm32.h | 3 +-- gcc/config/mep/mep.h | 8 +------- gcc/config/mmix/mmix.h | 3 +-- gcc/config/pa/pa-protos.h | 1 + gcc/config/pa/pa.c | 12 ++++++++++++ gcc/config/pa/pa.h | 9 +-------- gcc/config/rs6000/rs6000-protos.h | 1 + gcc/config/rs6000/rs6000.c | 8 ++++++++ gcc/config/rs6000/xcoff.h | 3 +-- gcc/config/spu/spu.h | 3 +-- gcc/config/visium/visium.h | 3 +-- gcc/defaults.h | 6 +----- gcc/output.h | 3 +++ gcc/varasm.c | 9 +++++++++ gcc/vmsdbgout.c | 1 + gcc/xcoffout.c | 1 + 22 files changed, 60 insertions(+), 48 deletions(-) diff --git a/gcc/config/arc/arc.h b/gcc/config/arc/arc.h index d98cce1..d3747b9 100644 --- a/gcc/config/arc/arc.h +++ b/gcc/config/arc/arc.h @@ -1245,8 +1245,7 @@ do { \ /* This is how to output the definition of a user-level label named NAME, such as the label on a static function or variable NAME. */ -#define ASM_OUTPUT_LABEL(FILE, NAME) \ -do { assemble_name (FILE, NAME); fputs (":\n", FILE); } while (0) +#define ASM_OUTPUT_LABEL default_output_label #define ASM_NAME_P(NAME) ( NAME[0]=='*') diff --git a/gcc/config/bfin/bfin.h b/gcc/config/bfin/bfin.h index 26ba7c2..08906aa 100644 --- a/gcc/config/bfin/bfin.h +++ b/gcc/config/bfin/bfin.h @@ -1044,10 +1044,7 @@ typedef enum directives { ASM_OUTPUT_LABEL(FILE, NAME); \ } while (0) -#define ASM_OUTPUT_LABEL(FILE, NAME) \ - do { assemble_name (FILE, NAME); \ - fputs (":\n",FILE); \ - } while (0) +#define ASM_OUTPUT_LABEL default_output_label #define ASM_OUTPUT_LABELREF(FILE,NAME) \ do { fprintf (FILE, "_%s", NAME); \ diff --git a/gcc/config/frv/frv.h b/gcc/config/frv/frv.h index b0d66fd..1d25974 100644 --- a/gcc/config/frv/frv.h +++ b/gcc/config/frv/frv.h @@ -1668,11 +1668,7 @@ do { \ `assemble_name (STREAM, NAME)' to output the name itself; before and after that, output the additional assembler syntax for defining the name, and a newline. */ -#define ASM_OUTPUT_LABEL(STREAM, NAME) \ -do { \ - assemble_name (STREAM, NAME); \ - fputs (":\n", STREAM); \ -} while (0) +#define ASM_OUTPUT_LABEL default_output_label /* Globalizing directive for a label. */ #define GLOBAL_ASM_OP "\t.globl " diff --git a/gcc/config/ia64/ia64-protos.h b/gcc/config/ia64/ia64-protos.h index 29fc714..8e540e4 100644 --- a/gcc/config/ia64/ia64-protos.h +++ b/gcc/config/ia64/ia64-protos.h @@ -72,6 +72,7 @@ extern rtx ia64_expand_builtin (tree, rtx, rtx, machine_mode, int); extern rtx ia64_va_arg (tree, tree); #endif /* RTX_CODE */ +extern void ia64_output_label (FILE *f, const char *label); extern void ia64_asm_output_external (FILE *, tree, const char *); extern void ia64_vms_output_aligned_decl_common (FILE *, tree, const char *, unsigned HOST_WIDE_INT, diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index 779fc58..e07ebb5 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -10522,6 +10522,17 @@ ia64_hpux_function_arg_padding (machine_mode mode, const_tree type) return DEFAULT_FUNCTION_ARG_PADDING (mode, type); } +/* Assemble a label. */ + +void +ia64_output_label (FILE *f, const char *label) +{ + ia64_asm_output_label = 1; + assemble_name (f, label); + fputs (":\n", f); + ia64_asm_output_label = 0; +} + /* Emit text to declare externally defined variables and functions, because the Intel assembler does not support undefined externals. */ diff --git a/gcc/config/ia64/ia64.h b/gcc/config/ia64/ia64.h index 4b62423..1afa7b7 100644 --- a/gcc/config/ia64/ia64.h +++ b/gcc/config/ia64/ia64.h @@ -1246,13 +1246,7 @@ do { \ why ia64_asm_output_label exists. */ extern int ia64_asm_output_label; -#define ASM_OUTPUT_LABEL(STREAM, NAME) \ -do { \ - ia64_asm_output_label = 1; \ - assemble_name (STREAM, NAME); \ - fputs (":\n", STREAM); \ - ia64_asm_output_label = 0; \ -} while (0) +#define ASM_OUTPUT_LABEL ia64_output_label /* Globalizing directive for a label. */ #define GLOBAL_ASM_OP "\t.global " diff --git a/gcc/config/lm32/lm32.h b/gcc/config/lm32/lm32.h index 986383f..9e8c667 100644 --- a/gcc/config/lm32/lm32.h +++ b/gcc/config/lm32/lm32.h @@ -443,8 +443,7 @@ do \ } \ while (0) -#define ASM_OUTPUT_LABEL(FILE, NAME) \ - do { assemble_name (FILE, NAME); fputs (":\n", FILE); } while (0) +#define ASM_OUTPUT_LABEL default_output_label #define ASM_OUTPUT_LABELREF(FILE,NAME) \ do { \ diff --git a/gcc/config/mep/mep.h b/gcc/config/mep/mep.h index f7322cb7..8a9d447 100644 --- a/gcc/config/mep/mep.h +++ b/gcc/config/mep/mep.h @@ -625,13 +625,7 @@ typedef struct #define ASM_OUTPUT_ALIGNED_DECL_LOCAL(STREAM, DECL, NAME, SIZE, ALIGNMENT) \ mep_output_aligned_common (STREAM, DECL, NAME, SIZE, ALIGNMENT, 0) -#define ASM_OUTPUT_LABEL(STREAM, NAME) \ - do \ - { \ - assemble_name (STREAM, NAME); \ - fputs (":\n", STREAM); \ - } \ - while (0) +#define ASM_OUTPUT_LABEL default_output_label /* Globalizing directive for a label. */ #define GLOBAL_ASM_OP "\t.globl " diff --git a/gcc/config/mmix/mmix.h b/gcc/config/mmix/mmix.h index 29d39bc..aac5aa0 100644 --- a/gcc/config/mmix/mmix.h +++ b/gcc/config/mmix/mmix.h @@ -647,8 +647,7 @@ typedef struct { int regs; int lib; } CUMULATIVE_ARGS; /* Node: Label Output */ -#define ASM_OUTPUT_LABEL(STREAM, NAME) \ - mmix_asm_output_label (STREAM, NAME) +#define ASM_OUTPUT_LABEL mmix_asm_output_label #define ASM_OUTPUT_INTERNAL_LABEL(STREAM, NAME) \ mmix_asm_output_internal_label (STREAM, NAME) diff --git a/gcc/config/pa/pa-protos.h b/gcc/config/pa/pa-protos.h index 0e13cd5..46a3e3b 100644 --- a/gcc/config/pa/pa-protos.h +++ b/gcc/config/pa/pa-protos.h @@ -110,6 +110,7 @@ extern void pa_asm_output_aligned_common (FILE *, const char *, extern void pa_asm_output_aligned_local (FILE *, const char *, unsigned HOST_WIDE_INT, unsigned int); +extern void pa_output_label (FILE *f, const char *label); extern void pa_hpux_asm_output_external (FILE *, tree, const char *); extern bool pa_cannot_change_mode_class (machine_mode, machine_mode, enum reg_class); diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index b24413a..2bcaa7e 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -9761,6 +9761,18 @@ pa_reloc_rw_mask (void) return 3; } +/* Assemble a lable. */ + +void +pa_output_label (FILE *f, const char *label) +{ + assemble_name (f, label); + if (TARGET_GAS) + fputs (":\n", f); + else + fputc ('\n', (f)); +} + static void pa_globalize_label (FILE *stream, const char *name) { diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h index bdfbb16..595a10b 100644 --- a/gcc/config/pa/pa.h +++ b/gcc/config/pa/pa.h @@ -1107,14 +1107,7 @@ do { \ /* This is how to output the definition of a user-level label named NAME, such as the label on a static function or variable NAME. */ -#define ASM_OUTPUT_LABEL(FILE,NAME) \ - do { \ - assemble_name ((FILE), (NAME)); \ - if (TARGET_GAS) \ - fputs (":\n", (FILE)); \ - else \ - fputc ('\n', (FILE)); \ - } while (0) +#define ASM_OUTPUT_LABEL pa_output_label /* This is how to output a reference to a user-level label named NAME. `assemble_name' uses this. */ diff --git a/gcc/config/rs6000/rs6000-protos.h b/gcc/config/rs6000/rs6000-protos.h index 560a825..031614f 100644 --- a/gcc/config/rs6000/rs6000-protos.h +++ b/gcc/config/rs6000/rs6000-protos.h @@ -169,6 +169,7 @@ extern int function_ok_for_sibcall (tree); extern int rs6000_reg_parm_stack_space (tree, bool); extern void rs6000_xcoff_declare_function_name (FILE *, const char *, tree); extern void rs6000_xcoff_declare_object_name (FILE *, const char *, tree); +extern void rs6000_xcoff_output_label (FILE *f, const char *label); extern void rs6000_elf_declare_function_name (FILE *, const char *, tree); extern bool rs6000_elf_in_small_data_p (const_tree); #ifdef ARGS_SIZE_RTX diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index c8794b4..a214010 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -30364,6 +30364,14 @@ rs6000_xcoff_asm_output_anchor (rtx symbol) fprintf (asm_out_file, "\n"); } +/* Assemble the given label. */ +void +rs6000_xcoff_output_label (FILE *f, const char *label) +{ + RS6000_OUTPUT_BASENAME (f, label); + fputs (":\n", f); +} + static void rs6000_xcoff_asm_globalize_label (FILE *stream, const char *name) { diff --git a/gcc/config/rs6000/xcoff.h b/gcc/config/rs6000/xcoff.h index 8b0cb27..263e239 100644 --- a/gcc/config/rs6000/xcoff.h +++ b/gcc/config/rs6000/xcoff.h @@ -119,8 +119,7 @@ /* This is how to output the definition of a user-level label named NAME, such as the label on a static function or variable NAME. */ -#define ASM_OUTPUT_LABEL(FILE,NAME) \ - do { RS6000_OUTPUT_BASENAME (FILE, NAME); fputs (":\n", FILE); } while (0) +#define ASM_OUTPUT_LABEL rs6000_xcoff_output_label /* This is how to output a command to make the user-level label named NAME defined for reference from other files. */ diff --git a/gcc/config/spu/spu.h b/gcc/config/spu/spu.h index 25fa435..f35b55e 100644 --- a/gcc/config/spu/spu.h +++ b/gcc/config/spu/spu.h @@ -443,8 +443,7 @@ do { \ /* Label Output */ -#define ASM_OUTPUT_LABEL(FILE,NAME) \ - do { assemble_name (FILE, NAME); fputs (":\n", FILE); } while (0) +#define ASM_OUTPUT_LABEL default_output_label #define ASM_OUTPUT_LABELREF(FILE, NAME) \ asm_fprintf (FILE, "%U%s", default_strip_name_encoding (NAME)) diff --git a/gcc/config/visium/visium.h b/gcc/config/visium/visium.h index a2ab61c..6457c55 100644 --- a/gcc/config/visium/visium.h +++ b/gcc/config/visium/visium.h @@ -1440,8 +1440,7 @@ do \ `assemble_name (STREAM, NAME)' to output the name itself; before and after that, output the additional assembler syntax for defining the name, and a newline. */ -#define ASM_OUTPUT_LABEL(STREAM,NAME) \ - do { assemble_name (STREAM, NAME); fputs (":\n", STREAM); } while (0) +#define ASM_OUTPUT_LABEL default_output_label /* Globalizing directive for a label */ #define GLOBAL_ASM_OP "\t.global " diff --git a/gcc/defaults.h b/gcc/defaults.h index 3ecf9fd..b1465de 100644 --- a/gcc/defaults.h +++ b/gcc/defaults.h @@ -89,11 +89,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see NAME, such as the label on variable NAME. */ #ifndef ASM_OUTPUT_LABEL -#define ASM_OUTPUT_LABEL(FILE,NAME) \ - do { \ - assemble_name ((FILE), (NAME)); \ - fputs (":\n", (FILE)); \ - } while (0) +#define ASM_OUTPUT_LABEL default_output_label #endif /* This is how to output the definition of a user-level label named diff --git a/gcc/output.h b/gcc/output.h index 8aa648a..07172d5 100644 --- a/gcc/output.h +++ b/gcc/output.h @@ -246,6 +246,9 @@ extern void assemble_name_raw (FILE *, const char *); be marked as referenced. */ extern void assemble_name (FILE *, const char *); +/* Assemble a label. */ +extern void default_output_label (FILE *f, const char *label); + /* Return the assembler directive for creating a given kind of integer object. SIZE is the number of bytes in the object and ALIGNED_P indicates whether it is known to be aligned. Return NULL if the diff --git a/gcc/varasm.c b/gcc/varasm.c index c2bfbf0..9c5f12d 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -2580,6 +2580,15 @@ assemble_name (FILE *file, const char *name) assemble_name_raw (file, name); } +/* Assemble a label. */ + +void +default_output_label (FILE *f, const char *label) +{ + assemble_name (f, label); + fputs (":\n", f); +} + /* Allocate SIZE bytes writable static space with a gensym name and return an RTX to refer to its address. */ diff --git a/gcc/vmsdbgout.c b/gcc/vmsdbgout.c index 0204740..d04b8fb 100644 --- a/gcc/vmsdbgout.c +++ b/gcc/vmsdbgout.c @@ -37,6 +37,7 @@ along with GCC; see the file COPYING3. If not see #include "langhooks.h" #include "function.h" #include "target.h" +#include "tm_p.h" /* Difference in seconds between the VMS Epoch and the Unix Epoch */ static const long long vms_epoch_offset = 3506716800ll; diff --git a/gcc/xcoffout.c b/gcc/xcoffout.c index 0f11115..83959c8 100644 --- a/gcc/xcoffout.c +++ b/gcc/xcoffout.c @@ -35,6 +35,7 @@ along with GCC; see the file COPYING3. If not see #include "output.h" #include "target.h" #include "debug.h" +#include "tm_p.h" #ifdef XCOFF_DEBUGGING_INFO -- 2.4.0