* 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
+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
/* 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;
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);
}
}
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
@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
/* 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: