aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorGeoffrey Keating <geoffk@redhat.com>2001-11-10 21:44:53 +0000
committerGeoffrey Keating <geoffk@gcc.gnu.org>2001-11-10 21:44:53 +0000
commit2f0b7af6989a1b64490b19cc814d6843eb755f86 (patch)
tree466739d010ca71f1275e3428ae80e2f8483c39d9 /gcc
parent2c1ed626a2431802fb9b9bd0a37d10ab17bdd174 (diff)
downloadgcc-2f0b7af6989a1b64490b19cc814d6843eb755f86.zip
gcc-2f0b7af6989a1b64490b19cc814d6843eb755f86.tar.gz
gcc-2f0b7af6989a1b64490b19cc814d6843eb755f86.tar.bz2
tm.texi (Label Output): Document ASM_OUTPUT_LABEL_REF.
* 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. From-SVN: r46918
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/config/stormy16/stormy16.c5
-rw-r--r--gcc/config/stormy16/stormy16.h10
-rw-r--r--gcc/doc/tm.texi12
-rw-r--r--gcc/final.c4
5 files changed, 37 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 301c8a1..f1c1ee8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/stormy16/stormy16.c b/gcc/config/stormy16/stormy16.c
index 653ecaf..06c355e 100644
--- a/gcc/config/stormy16/stormy16.c
+++ b/gcc/config/stormy16/stormy16.c
@@ -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);
}
}
diff --git a/gcc/config/stormy16/stormy16.h b/gcc/config/stormy16/stormy16.h
index b0aaa01..3ff9d8c 100644
--- a/gcc/config/stormy16/stormy16.h
+++ b/gcc/config/stormy16/stormy16.h
@@ -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
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
index 3ff28f5..c0a2b70 100644
--- a/gcc/doc/tm.texi
+++ b/gcc/doc/tm.texi
@@ -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
diff --git a/gcc/final.c b/gcc/final.c
index ab5779a..d94eacf 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -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: