linux.h (ASM_DOUBLE, [...]): Remove.
authorUlrich Weigand <uweigand@de.ibm.com>
Wed, 16 Oct 2002 19:09:25 +0000 (19:09 +0000)
committerUlrich Weigand <uweigand@gcc.gnu.org>
Wed, 16 Oct 2002 19:09:25 +0000 (19:09 +0000)
* config/s390/linux.h (ASM_DOUBLE, _ASM_OUTPUT_LONG): Remove.
(LPREFIX): Likewise.
(ASM_COMMENT_START, LOCAL_LABEL_PREFIX, ASM_FORMAT_PRIVATE_NAME,
ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT,
ASM_OUTPUT_ALIGN, ASM_OUTPUT_SKIP, ASM_OUTPUT_ALIGNED_BSS,
TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP, BSS_SECTION_ASM_OP,
GLOBAL_ASM_OP, ASM_OUTPUT_MI_THUNK): Move to s390.h.

* config/s390/s390.h (ASM_COMMENT_START, LOCAL_LABEL_PREFIX,
ASM_FORMAT_PRIVATE_NAME, ASM_OUTPUT_ALIGN, ASM_OUTPUT_SKIP,
ASM_OUTPUT_ALIGNED_BSS, TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP,
BSS_SECTION_ASM_OP): Move from linux.h.
(ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
Also, use ASM_GENERATE_INTERNAL_LABEL instead of LPREFIX.

* config/s390/s390.c (s390_function_profiler): Use
ASM_GENERATE_INTERNAL_LABEL instead of LPREFIX.

From-SVN: r58219

gcc/ChangeLog
gcc/config/s390/linux.h
gcc/config/s390/s390.c
gcc/config/s390/s390.h

index 9b033e48fa38490aeebd33614fb0cc29a52e3faa..ec6b25d308256878881acccc2b3c10e2d2ef60a9 100644 (file)
@@ -1,3 +1,23 @@
+2002-10-16  Ulrich Weigand  <uweigand@de.ibm.com>
+
+       * config/s390/linux.h (ASM_DOUBLE, _ASM_OUTPUT_LONG): Remove.
+       (LPREFIX): Likewise.
+       (ASM_COMMENT_START, LOCAL_LABEL_PREFIX, ASM_FORMAT_PRIVATE_NAME,
+       ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT,
+       ASM_OUTPUT_ALIGN, ASM_OUTPUT_SKIP, ASM_OUTPUT_ALIGNED_BSS,
+       TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP, BSS_SECTION_ASM_OP,
+       GLOBAL_ASM_OP, ASM_OUTPUT_MI_THUNK): Move to s390.h.
+
+       * config/s390/s390.h (ASM_COMMENT_START, LOCAL_LABEL_PREFIX, 
+       ASM_FORMAT_PRIVATE_NAME, ASM_OUTPUT_ALIGN, ASM_OUTPUT_SKIP, 
+       ASM_OUTPUT_ALIGNED_BSS, TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP, 
+       BSS_SECTION_ASM_OP): Move from linux.h.
+       (ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
+       Also, use ASM_GENERATE_INTERNAL_LABEL instead of LPREFIX.
+
+       * config/s390/s390.c (s390_function_profiler): Use 
+       ASM_GENERATE_INTERNAL_LABEL instead of LPREFIX.
+
 2002-10-15  Richard Henderson  <rth@redhat.com>
 
        * real.c (real_to_decimal): Accept BUF_SIZE and CROP_TRAILING_ZEROS
index 0907d290c1a1257be839e9a17aeb40e442f66bbc..b94f0b9d8f260ae5fb8021d7d7d7a1ec1b62b5f5 100644 (file)
@@ -126,162 +126,6 @@ Boston, MA 02111-1307, USA.  */
   { "link_arch64",     LINK_ARCH64_SPEC },     \
 
 
-/* Character to start a comment.  */
-
-#define ASM_COMMENT_START "#"
-
-
-/* Assembler pseudos to introduce constants of various size.  */
-
-#define ASM_DOUBLE "\t.double"
-
-/* The LOCAL_LABEL_PREFIX variable is used by dbxelf.h.  */
-#define LOCAL_LABEL_PREFIX "."
-
-/* Prefix for internally generated assembler labels.  */
-#define LPREFIX ".L"
-
-/* 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.  */
-
-#undef ASM_FORMAT_PRIVATE_NAME
-#define ASM_FORMAT_PRIVATE_NAME(OUTPUT, NAME, LABELNO)  \
-( (OUTPUT) = (char *) alloca (strlen ((NAME)) + 10),    \
-  sprintf ((OUTPUT), "%s.%d", (NAME), (LABELNO)))
-
-
-     /* internal macro to output long */
-#define _ASM_OUTPUT_LONG(FILE, VALUE)                                   \
-      fprintf (FILE, "\t.long\t0x%lX\n", VALUE);
-
-
-/* This is how to output an element of a case-vector that is absolute.  */
-
-#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE)                   \
-  fprintf (FILE, "%s%s%d\n", integer_asm_op (UNITS_PER_WORD, TRUE), \
-          LPREFIX, VALUE)
-
-/* This is how to output an element of a case-vector that is relative.  */
-
-#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL)               \
-  fprintf (FILE, "%s%s%d-%s%d\n", integer_asm_op (UNITS_PER_WORD, TRUE), \
-          LPREFIX, VALUE, LPREFIX, REL)
-
-
-
-/* This is how to output an assembler line
-   that says to advance the location counter
-   to a multiple of 2**LOG bytes.  */
-
-#undef ASM_OUTPUT_ALIGN
-#define ASM_OUTPUT_ALIGN(FILE, LOG)    \
-    if ((LOG)!=0) fprintf ((FILE), "\t.align\t%d\n", 1<<(LOG))
-
-/* This is how to output an assembler line
-   that says to advance the location counter by SIZE bytes.  */
-
-#undef ASM_OUTPUT_SKIP
-#define ASM_OUTPUT_SKIP(FILE, SIZE)  \
-  fprintf ((FILE), "\t.set\t.,.+%u\n", (SIZE))
-
-/* This is how to output assembler code to declare an
-   uninitialized external linkage data object.  */
-
-#undef ASM_OUTPUT_ALIGNED_BSS
-#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
-  asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
-
-/* Output before read-only data.  */
-
-#define TEXT_SECTION_ASM_OP ".text"
-
-/* Output before writable (initialized) data.  */
-
-#define DATA_SECTION_ASM_OP ".data"
-
-/* Output before writable (uninitialized) data.  */
-
-#define BSS_SECTION_ASM_OP ".bss"
-
-/* This is how to output a command to make the user-level label named NAME
-   defined for reference from other files.  */
-
-/* Globalizing directive for a label.  */
-#define GLOBAL_ASM_OP ".globl "
-\f
-/* Output code to add DELTA to the first argument, and then jump to FUNCTION.
-   Used for C++ multiple inheritance.  */
-#define ASM_OUTPUT_MI_THUNK(FILE, THUNK_FNDECL, DELTA, FUNCTION)              \
-do {                                                                          \
-  if (TARGET_64BIT)                                                           \
-    {                                                                         \
-      if (flag_pic)                                                           \
-        {                                                                     \
-          fprintf (FILE, "\tlarl  1,0f\n");                                   \
-          fprintf (FILE, "\tagf   %d,0(1)\n",                                 \
-                   aggregate_value_p (TREE_TYPE                               \
-                                      (TREE_TYPE (FUNCTION))) ? 3 :2 );       \
-          fprintf (FILE, "\tlarl  1,");                                       \
-          assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0));      \
-          fprintf (FILE, "@GOTENT\n");                                        \
-          fprintf (FILE, "\tlg    1,0(1)\n");                                 \
-          fprintf (FILE, "\tbr    1\n");                                      \
-          fprintf (FILE, "0:\t.long  ");                                     \
-          fprintf (FILE, HOST_WIDE_INT_PRINT_DEC, (DELTA));                   \
-          fprintf (FILE, "\n");                                                      \
-        }                                                                     \
-      else                                                                    \
-        {                                                                     \
-          fprintf (FILE, "\tlarl  1,0f\n");                                   \
-          fprintf (FILE, "\tagf   %d,0(1)\n",                                 \
-          aggregate_value_p (TREE_TYPE                                        \
-                             (TREE_TYPE (FUNCTION))) ? 3 :2 );                \
-          fprintf (FILE, "\tjg  ");                                           \
-          assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0));      \
-          fprintf (FILE, "\n");                                               \
-          fprintf (FILE, "0:\t.long  ");                                     \
-          fprintf (FILE, HOST_WIDE_INT_PRINT_DEC, (DELTA));                   \
-          fprintf (FILE, "\n");                                                      \
-        }                                                                     \
-    }                                                                         \
-  else                                                                        \
-    {                                                                         \
-      if (flag_pic)                                                           \
-        {                                                                     \
-          fprintf (FILE, "\tbras  1,0f\n");                                   \
-          fprintf (FILE, "\t.long _GLOBAL_OFFSET_TABLE_-.\n");                \
-          fprintf (FILE, "\t.long  ");                                        \
-          assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0));      \
-          fprintf (FILE, "@GOT\n");                                           \
-          fprintf (FILE, "\t.long  ");                                       \
-          fprintf (FILE, HOST_WIDE_INT_PRINT_DEC, (DELTA));                   \
-          fprintf (FILE, "\n");                                                      \
-          fprintf (FILE, "0:\tal  %d,8(1)\n",                                 \
-                   aggregate_value_p (TREE_TYPE                               \
-                                      (TREE_TYPE (FUNCTION))) ? 3 : 2 );      \
-          fprintf (FILE, "\tl     0,4(1)\n");                                 \
-          fprintf (FILE, "\tal    1,0(1)\n");                                 \
-          fprintf (FILE, "\talr   1,0\n");                                    \
-          fprintf (FILE, "\tl     1,0(1)\n");                                 \
-          fprintf (FILE, "\tbr    1\n");                                      \
-        } else {                                                              \
-          fprintf (FILE, "\tbras  1,0f\n");                                   \
-          fprintf (FILE, "\t.long  ");                                        \
-          assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0));      \
-          fprintf (FILE, "-.\n");                                             \
-          fprintf (FILE, "\t.long  ");                                       \
-          fprintf (FILE, HOST_WIDE_INT_PRINT_DEC, (DELTA));                   \
-          fprintf (FILE, "\n");                                                      \
-          fprintf (FILE, "0:\tal  %d,4(1)\n",                                 \
-                   aggregate_value_p (TREE_TYPE                               \
-                                      (TREE_TYPE (FUNCTION))) ? 3 : 2 );      \
-          fprintf (FILE, "\tal    1,0(1)\n");                                 \
-          fprintf (FILE, "\tbr    1\n");                                      \
-       }                                                                      \
-    }                                                                         \
-} while (0)
-
 /* Do code reading to identify a signal frame, and set the frame
    state data appropriately.  See unwind-dw2.c for the structs.  */
 
index d84b72714e6f6dab410384cbf37513bf31c879ee..b785b0b6317b4a720c9625516f5fa476ed10a3d8 100644 (file)
@@ -5487,7 +5487,7 @@ s390_function_profiler (file, labelno)
   rtx op[7];
 
   char label[128];
-  sprintf (label, "%sP%d", LPREFIX, labelno);
+  ASM_GENERATE_INTERNAL_LABEL (label, "LP", labelno);
 
   fprintf (file, "# function profiler \n");
 
index 4b992c38b1c512f7d19a40db4aa1b80accf3f8bf..7bc1e0a1eac7e671aa39978242997bb8b32c7337 100644 (file)
@@ -854,6 +854,79 @@ CUMULATIVE_ARGS;
 
 #define EXIT_IGNORE_STACK       1
 
+/* Output code to add DELTA to the first argument, and then jump to FUNCTION.
+   Used for C++ multiple inheritance.  */
+#define ASM_OUTPUT_MI_THUNK(FILE, THUNK_FNDECL, DELTA, FUNCTION)              \
+do {                                                                          \
+  if (TARGET_64BIT)                                                           \
+    {                                                                         \
+      if (flag_pic)                                                           \
+        {                                                                     \
+          fprintf (FILE, "\tlarl  1,0f\n");                                   \
+          fprintf (FILE, "\tagf   %d,0(1)\n",                                 \
+                   aggregate_value_p (TREE_TYPE                               \
+                                      (TREE_TYPE (FUNCTION))) ? 3 :2 );       \
+          fprintf (FILE, "\tlarl  1,");                                       \
+          assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0));      \
+          fprintf (FILE, "@GOTENT\n");                                        \
+          fprintf (FILE, "\tlg    1,0(1)\n");                                 \
+          fprintf (FILE, "\tbr    1\n");                                      \
+          fprintf (FILE, "0:\t.long  ");                                     \
+          fprintf (FILE, HOST_WIDE_INT_PRINT_DEC, (DELTA));                   \
+          fprintf (FILE, "\n");                                                      \
+        }                                                                     \
+      else                                                                    \
+        {                                                                     \
+          fprintf (FILE, "\tlarl  1,0f\n");                                   \
+          fprintf (FILE, "\tagf   %d,0(1)\n",                                 \
+          aggregate_value_p (TREE_TYPE                                        \
+                             (TREE_TYPE (FUNCTION))) ? 3 :2 );                \
+          fprintf (FILE, "\tjg  ");                                           \
+          assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0));      \
+          fprintf (FILE, "\n");                                               \
+          fprintf (FILE, "0:\t.long  ");                                     \
+          fprintf (FILE, HOST_WIDE_INT_PRINT_DEC, (DELTA));                   \
+          fprintf (FILE, "\n");                                                      \
+        }                                                                     \
+    }                                                                         \
+  else                                                                        \
+    {                                                                         \
+      if (flag_pic)                                                           \
+        {                                                                     \
+          fprintf (FILE, "\tbras  1,0f\n");                                   \
+          fprintf (FILE, "\t.long _GLOBAL_OFFSET_TABLE_-.\n");                \
+          fprintf (FILE, "\t.long  ");                                        \
+          assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0));      \
+          fprintf (FILE, "@GOT\n");                                           \
+          fprintf (FILE, "\t.long  ");                                       \
+          fprintf (FILE, HOST_WIDE_INT_PRINT_DEC, (DELTA));                   \
+          fprintf (FILE, "\n");                                                      \
+          fprintf (FILE, "0:\tal  %d,8(1)\n",                                 \
+                   aggregate_value_p (TREE_TYPE                               \
+                                      (TREE_TYPE (FUNCTION))) ? 3 : 2 );      \
+          fprintf (FILE, "\tl     0,4(1)\n");                                 \
+          fprintf (FILE, "\tal    1,0(1)\n");                                 \
+          fprintf (FILE, "\talr   1,0\n");                                    \
+          fprintf (FILE, "\tl     1,0(1)\n");                                 \
+          fprintf (FILE, "\tbr    1\n");                                      \
+        } else {                                                              \
+          fprintf (FILE, "\tbras  1,0f\n");                                   \
+          fprintf (FILE, "\t.long  ");                                        \
+          assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0));      \
+          fprintf (FILE, "-.\n");                                             \
+          fprintf (FILE, "\t.long  ");                                       \
+          fprintf (FILE, HOST_WIDE_INT_PRINT_DEC, (DELTA));                   \
+          fprintf (FILE, "\n");                                                      \
+          fprintf (FILE, "0:\tal  %d,4(1)\n",                                 \
+                   aggregate_value_p (TREE_TYPE                               \
+                                      (TREE_TYPE (FUNCTION))) ? 3 : 2 );      \
+          fprintf (FILE, "\tal    1,0(1)\n");                                 \
+          fprintf (FILE, "\tbr    1\n");                                      \
+       }                                                                      \
+    }                                                                         \
+} while (0)
+
+
 /* Addressing modes, and classification of registers for them.  */
 
 /* #define HAVE_POST_INCREMENT */
@@ -1237,10 +1310,43 @@ CUMULATIVE_ARGS;
  
 extern struct rtx_def *s390_compare_op0, *s390_compare_op1;
 
+/* implicit call of memcpy, not bcopy   */
+
+#define TARGET_MEM_FUNCTIONS
+
+
+/* Assembler file format.  */
+
+/* Character to start a comment.  */
+#define ASM_COMMENT_START "#"
+
+/* Declare an uninitialized external linkage data object.  */
+#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
+  asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
+
+/* Globalizing directive for a label.  */
+#define GLOBAL_ASM_OP ".globl "
+
+/* Advance the location counter to a multiple of 2**LOG bytes.  */
+#define ASM_OUTPUT_ALIGN(FILE, LOG) \
+  if ((LOG)) fprintf ((FILE), "\t.align\t%d\n", 1 << (LOG))
+
+/* Advance the location counter by SIZE bytes.  */
+#define ASM_OUTPUT_SKIP(FILE, SIZE) \
+  fprintf ((FILE), "\t.set\t.,.+%u\n", (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)))
+
+/* The LOCAL_LABEL_PREFIX variable is used by dbxelf.h.  */
+#define LOCAL_LABEL_PREFIX "."
 
 /* How to refer to registers in assembler output.  This sequence is
    indexed by compiler's hard-register-number (see above).  */
-
 #define REGISTER_NAMES                                                 \
 { "%r0",  "%r1",  "%r2",  "%r3",  "%r4",  "%r5",  "%r6",  "%r7",       \
   "%r8",  "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15",       \
@@ -1249,23 +1355,37 @@ extern struct rtx_def *s390_compare_op0, *s390_compare_op1;
   "%ap",  "%cc",  "%fp"                                                        \
 }
 
-/* implicit call of memcpy, not bcopy   */
-
-#define TARGET_MEM_FUNCTIONS
-
 /* Either simplify a location expression, or return the original.  */
-
 #define ASM_SIMPLIFY_DWARF_ADDR(X) \
   s390_simplify_dwarf_addr (X)
 
-/* Print operand X (an rtx) in assembler syntax to file FILE.
-   CODE is a letter or dot (`z' in `%z0') or 0 if no letter was specified.
-   For `%' followed by punctuation, CODE is the punctuation and X is null.  */
-
+/* Print operand X (an rtx) in assembler syntax to file FILE.  */
 #define PRINT_OPERAND(FILE, X, CODE) print_operand (FILE, X, CODE)
-
 #define PRINT_OPERAND_ADDRESS(FILE, ADDR) print_operand_address (FILE, ADDR)
 
+/* Output an element of a case-vector that is absolute.  */
+#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE)                           \
+do {                                                                   \
+  char buf[32];                                                                \
+  fputs (integer_asm_op (UNITS_PER_WORD, TRUE), (FILE));               \
+  ASM_GENERATE_INTERNAL_LABEL (buf, "L", (VALUE));                     \
+  assemble_name ((FILE), buf);                                         \
+  fputc ('\n', (FILE));                                                        \
+} while (0)
+
+/* Output an element of a case-vector that is relative.  */
+#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL)               \
+do {                                                                   \
+  char buf[32];                                                                \
+  fputs (integer_asm_op (UNITS_PER_WORD, TRUE), (FILE));               \
+  ASM_GENERATE_INTERNAL_LABEL (buf, "L", (VALUE));                     \
+  assemble_name ((FILE), buf);                                         \
+  fputc ('-', (FILE));                                                 \
+  ASM_GENERATE_INTERNAL_LABEL (buf, "L", (REL));                       \
+  assemble_name ((FILE), buf);                                         \
+  fputc ('\n', (FILE));                                                        \
+} while (0)
+
 
 /* Define the codes that are matched by predicates in aux-output.c.  */
 
@@ -1282,6 +1402,17 @@ extern struct rtx_def *s390_compare_op0, *s390_compare_op1;
   {"s390_plus_operand", { PLUS }},
 
 
+/* Sections.  */
+
+/* Output before read-only data.  */
+#define TEXT_SECTION_ASM_OP ".text"
+
+/* Output before writable (initialized) data.  */
+#define DATA_SECTION_ASM_OP ".data"
+
+/* Output before writable (uninitialized) data.  */
+#define BSS_SECTION_ASM_OP ".bss"
+
 /* S/390 constant pool breaks the devices in crtstuff.c to control section
    in where code resides.  We have to write it as asm code.  */
 #ifndef __s390x__