diff options
author | Geoffrey Keating <geoffk@redhat.com> | 2001-11-10 21:44:53 +0000 |
---|---|---|
committer | Geoffrey Keating <geoffk@gcc.gnu.org> | 2001-11-10 21:44:53 +0000 |
commit | 2f0b7af6989a1b64490b19cc814d6843eb755f86 (patch) | |
tree | 466739d010ca71f1275e3428ae80e2f8483c39d9 | |
parent | 2c1ed626a2431802fb9b9bd0a37d10ab17bdd174 (diff) | |
download | gcc-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
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/config/stormy16/stormy16.c | 5 | ||||
-rw-r--r-- | gcc/config/stormy16/stormy16.h | 10 | ||||
-rw-r--r-- | gcc/doc/tm.texi | 12 | ||||
-rw-r--r-- | gcc/final.c | 4 |
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: |