OSDN Git Service

* doc/tm.texi (Label Output): Document ASM_OUTPUT_LABEL_REF.
authorgeoffk <geoffk@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 10 Nov 2001 21:44:53 +0000 (21:44 +0000)
committergeoffk <geoffk@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 10 Nov 2001 21:44:53 +0000 (21:44 +0000)
* final.c (output_addr_const): Use ASM_OUTPUT_LABEL_REF.
* config/stormy16/stormy16.c (xstormy16_print_operand): For '%C',
don't print an @fptr for labels either.
(xstormy16_output_addr_vec): Don't print @fptr here.
* config/stormy16/stormy16.h (ASM_OUTPUT_LABEL_REF): New macro.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46918 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/stormy16/stormy16.c
gcc/config/stormy16/stormy16.h
gcc/doc/tm.texi
gcc/final.c

index 301c8a1..f1c1ee8 100644 (file)
@@ -1,3 +1,12 @@
+2001-11-10  Geoffrey Keating  <geoffk@redhat.com>
+
+       * doc/tm.texi (Label Output): Document ASM_OUTPUT_LABEL_REF.
+       * final.c (output_addr_const): Use ASM_OUTPUT_LABEL_REF.
+       * config/stormy16/stormy16.c (xstormy16_print_operand): For '%C',
+       don't print an @fptr for labels either.
+       (xstormy16_output_addr_vec): Don't print @fptr here.
+       * config/stormy16/stormy16.h (ASM_OUTPUT_LABEL_REF): New macro.
+
 Sat Nov 10 08:50:50 2001  Jeffrey A Law  (law@cygnus.com)
 
        * ssa-ccp.c (examine_flow_edges): Use old-style definition, not
index 653ecaf..06c355e 100644 (file)
@@ -1539,6 +1539,8 @@ xstormy16_print_operand (file, x, code)
       /* Print the symbol without a surrounding @fptr().  */
       if (GET_CODE (x) == SYMBOL_REF)
        assemble_name (file, XSTR (x, 0));
+      else if (GET_CODE (x) == LABEL_REF)
+       output_asm_label (x);
       else
        xstormy16_print_operand_address (file, x);
       return;
@@ -1652,8 +1654,7 @@ xstormy16_output_addr_vec (file, label, table)
   for (idx = 0; idx < vlen; idx++)
     {
       fputs ("\tjmpf ", file);
-      xstormy16_print_operand_address (file, 
-                                     XEXP (XVECEXP (table, 0, idx), 0));
+      output_asm_label (XEXP (XVECEXP (table, 0, idx), 0));
       fputc ('\n', file);
     }
 }
index b0aaa01..3ff9d8c 100644 (file)
@@ -3996,6 +3996,16 @@ do {                                                                     \
       assemble_name (STREAM, XSTR (SYMBOL, 0));                                \
   } while (0)
 
+/* A C statement to output to the stdio stream STREAM the assembler
+   definition of a label, the textual form is in 'BUF'.  Not used
+   for %l.  */
+#define ASM_OUTPUT_LABEL_REF(STREAM, NAME)     \
+do  {                                          \
+  fputs ("@fptr(", STREAM);                    \
+  assemble_name (STREAM, NAME);                        \
+  fputc (')', STREAM);                         \
+} while (0)
+
 /* A C statement (sans semicolon) to output to the stdio stream STREAM any text
    necessary for declaring the name NAME of a function which is being defined.
    This macro is responsible for outputting the label definition (perhaps using
index 3ff28f5..c0a2b70 100644 (file)
@@ -6428,11 +6428,21 @@ a reference to the label @var{label}.
 @findex ASM_OUTPUT_SYMBOL_REF
 @item ASM_OUTPUT_SYMBOL_REF (@var{stream}, @var{sym})
 A C statement (sans semicolon) to output a reference to
-@code{SYMBOL_REF} @var{sym}.  If not defined, @code{assemble_output}
+@code{SYMBOL_REF} @var{sym}.  If not defined, @code{assemble_name}
 will be used to output the name of the symbol.  This macro may be used
 to modify the way a symbol is referenced depending on information
 encoded by @code{ENCODE_SECTION_INFO}.
 
+@findex ASM_OUTPUT_LABEL_REF
+@item ASM_OUTPUT_LABEL_REF (@var{stream}, @var{buf})
+A C statement (sans semicolon) to output a reference to @var{buf}, the
+result of ASM_GENERATE_INTERNAL_LABEL.  If not defined,
+@code{assemble_name} will be used to output the name of the symbol.
+This macro is not used by @code{output_asm_label}, or the @code{%l}
+specifier that calls it; the intention is that this macro should be set
+when it is necessary to output a label differently when its address
+is being taken.
+
 @findex ASM_OUTPUT_INTERNAL_LABEL
 @item ASM_OUTPUT_INTERNAL_LABEL (@var{stream}, @var{prefix}, @var{num})
 A C statement to output to the stdio stream @var{stream} a label whose
index ab5779a..d94eacf 100644 (file)
@@ -3678,7 +3678,11 @@ output_addr_const (file, x)
       /* Fall through.  */
     case CODE_LABEL:
       ASM_GENERATE_INTERNAL_LABEL (buf, "L", CODE_LABEL_NUMBER (x));
+#ifdef ASM_OUTPUT_LABEL_REF
+      ASM_OUTPUT_LABEL_REF (file, buf);
+#else
       assemble_name (file, buf);
+#endif
       break;
 
     case CONST_INT: