diff options
Diffstat (limited to 'gcc/config/i370')
-rw-r--r-- | gcc/config/i370/i370-c.c | 2 | ||||
-rw-r--r-- | gcc/config/i370/i370.c | 16 | ||||
-rw-r--r-- | gcc/config/i370/i370.h | 47 | ||||
-rw-r--r-- | gcc/config/i370/t-i370 | 6 |
4 files changed, 23 insertions, 48 deletions
diff --git a/gcc/config/i370/i370-c.c b/gcc/config/i370/i370-c.c index 5651a5661c3..ab67c75e2c6 100644 --- a/gcc/config/i370/i370-c.c +++ b/gcc/config/i370/i370-c.c @@ -24,6 +24,8 @@ Boston, MA 02111-1307, USA. */ #include "config.h" #include "system.h" +#include "coretypes.h" +#include "tm.h" #include "tree.h" #include "toplev.h" #include "cpplib.h" diff --git a/gcc/config/i370/i370.c b/gcc/config/i370/i370.c index b4474db3273..3db961a6170 100644 --- a/gcc/config/i370/i370.c +++ b/gcc/config/i370/i370.c @@ -24,6 +24,8 @@ Boston, MA 02111-1307, USA. */ #include "config.h" #include "system.h" +#include "coretypes.h" +#include "tm.h" #include "rtl.h" #include "tree.h" #include "regs.h" @@ -109,6 +111,7 @@ static void i370_output_function_epilogue PARAMS ((FILE *, HOST_WIDE_INT)); static int mvs_hash_alias PARAMS ((const char *)); #endif static void i370_encode_section_info PARAMS ((tree, int)); +static void i370_internal_label PARAMS ((FILE *, const char *, unsigned long)); /* ===================================================== */ /* defines and functions specific to the HLASM assembler */ @@ -312,6 +315,8 @@ static const unsigned char ebcasc[256] = #define TARGET_ASM_FUNCTION_EPILOGUE i370_output_function_epilogue #undef TARGET_ENCODE_SECTION_INFO #define TARGET_ENCODE_SECTION_INFO i370_encode_section_info +#undef TARGET_ASM_INTERNAL_LABEL +#define TARGET_ASM_INTERNAL_LABEL i370_internal_label struct gcc_target targetm = TARGET_INITIALIZER; @@ -1597,3 +1602,14 @@ i370_encode_section_info (decl, first) SYMBOL_REF_FLAG (XEXP (DECL_RTL (decl), 0)) = 1; } +static void +i370_internal_label (stream, prefix, labelno) + FILE *stream; + const char *prefix; + unsigned long labelno; +{ + if (!strcmp (prefix, "L")) + mvs_add_label(labelno); + + default_internal_label (stream, prefix, labelno); +} diff --git a/gcc/config/i370/i370.h b/gcc/config/i370/i370.h index 23cf036b0df..802103315d2 100644 --- a/gcc/config/i370/i370.h +++ b/gcc/config/i370/i370.h @@ -656,12 +656,6 @@ enum reg_class /* Addressing modes, and classification of registers for them. */ -/* #define HAVE_POST_INCREMENT */ -/* #define HAVE_POST_DECREMENT */ - -/* #define HAVE_PRE_DECREMENT */ -/* #define HAVE_PRE_INCREMENT */ - /* These assume that REGNO is a hard or pseudo reg number. They give nonzero only if REGNO is a hard reg of the suitable class or a pseudo reg currently allocated to a suitable hard reg. @@ -1098,18 +1092,6 @@ enum reg_class #define ASM_GENERATE_INTERNAL_LABEL(LABEL, PREFIX, NUM) \ sprintf (LABEL, "*%s%d", PREFIX, NUM) -/* Generate internal label. Since we can branch here from off page, we - must reload the base register. */ - -#define ASM_OUTPUT_INTERNAL_LABEL(FILE, PREFIX, NUM) \ -{ \ - if (!strcmp (PREFIX,"L")) \ - { \ - mvs_add_label(NUM); \ - } \ - fprintf (FILE, "%s%d\tEQU\t*\n", PREFIX, NUM); \ -} - /* Generate case label. For HLASM we can change to the data CSECT and put the vectors out of the code body. The assembler just concatenates CSECTs with the same name. */ @@ -1258,15 +1240,7 @@ enum reg_class ASM_OUTPUT_SKIP (FILE,SIZE); \ } -/* Store in OUTPUT a string (made with alloca) containing an - assembler-name for a local static variable named NAME. - LABELNO is an integer which is different for each call. */ - -#define ASM_FORMAT_PRIVATE_NAME(OUTPUT, NAME, LABELNO) \ -{ \ - (OUTPUT) = (char *) alloca (strlen ((NAME)) + 10); \ - sprintf ((OUTPUT), "%s%d", (NAME), (LABELNO)); \ -} +#define ASM_PN_FORMAT "%s%lu" /* Print operand XV (an rtx) in assembler syntax to file FILE. CODE is a letter or dot (`z' in `%z0') or 0 if no letter was specified. @@ -1837,19 +1811,6 @@ abort(); \ /* #define ASM_OUTPUT_LABELREF(FILE, NAME) */ /* use gas -- defaults.h */ -/* Generate internal label. Since we can branch here from off page, we - must reload the base register. Note that internal labels are generated - for loops, goto's and case labels. */ -#undef ASM_OUTPUT_INTERNAL_LABEL -#define ASM_OUTPUT_INTERNAL_LABEL(FILE, PREFIX, NUM) \ -{ \ - if (!strcmp (PREFIX,"L")) \ - { \ - mvs_add_label(NUM); \ - } \ - fprintf (FILE, ".%s%d:\n", PREFIX, NUM); \ -} - /* let config/svr4.h define this ... * #define ASM_OUTPUT_CASE_LABEL(FILE, PREFIX, NUM, TABLE) * fprintf (FILE, "%s%d:\n", PREFIX, NUM) @@ -1886,11 +1847,7 @@ abort(); \ #undef SHIFT_DOUBLE_OMITS_COUNT #define SHIFT_DOUBLE_OMITS_COUNT 0 -#define ASM_FORMAT_PRIVATE_NAME(OUTPUT, NAME, LABELNO) \ -( (OUTPUT) = (char *) alloca (strlen ((NAME)) + 10), \ - sprintf ((OUTPUT), "%s.%d", (NAME), (LABELNO))) - - /* Implicit library calls should use memcpy, not bcopy, etc. */ +/* Implicit library calls should use memcpy, not bcopy, etc. */ #define TARGET_MEM_FUNCTIONS /* Output before read-only data. */ diff --git a/gcc/config/i370/t-i370 b/gcc/config/i370/t-i370 index 34758d838fd..96138a1c372 100644 --- a/gcc/config/i370/t-i370 +++ b/gcc/config/i370/t-i370 @@ -1,3 +1,3 @@ -i370-c.o: $(srcdir)/config/i370/i370-c.c $(CONFIG_H) $(SYSTEM_H) cpplib.h \ - $(TREE_H) c-pragma.h toplev.h $(TM_P_H) - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< +i370-c.o: $(srcdir)/config/i370/i370-c.c $(CONFIG_H) $(SYSTEM_H) coretypes.h + $(TM_H) $(TREE_H) toplev.h $(CPPLIB_H) c-pragma.h $(TM_P_H) + $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(srcdir)/config/i370/i370-c.c |