diff options
author | Jeff Law <law@gcc.gnu.org> | 1995-12-24 22:46:32 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1995-12-24 22:46:32 -0700 |
commit | 3ba1236fc8cac5ccf80f7f53a8b9252b66403b56 (patch) | |
tree | be5cbb1f4b92bf94e9c6ad10fd643b2b86aec2b7 | |
parent | 435b1237b12c65e34bb7475ccccd9b06edefa301 (diff) | |
download | gcc-3ba1236fc8cac5ccf80f7f53a8b9252b66403b56.zip gcc-3ba1236fc8cac5ccf80f7f53a8b9252b66403b56.tar.gz gcc-3ba1236fc8cac5ccf80f7f53a8b9252b66403b56.tar.bz2 |
pa.c (output_function_epilogue): Use assemble_integer rather than calling ASM_OUTPUT_INT directly.
* pa.c (output_function_epilogue): Use assemble_integer rather
than calling ASM_OUTPUT_INT directly.
* pa.h (ASM_OUTPUT_INT): Use plabels for everything in the
exception table section.
* pa.c (print_operand): Don't call fprintf to output a register
name. Use fputs instead.
From-SVN: r10861
-rw-r--r-- | gcc/config/pa/pa.c | 7 | ||||
-rw-r--r-- | gcc/config/pa/pa.h | 9 |
2 files changed, 11 insertions, 5 deletions
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index c6fb1ed..ed019cb 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -2320,7 +2320,7 @@ output_function_epilogue (file, size) for (i = 0; i < n_deferred_plabels; i++) { ASM_OUTPUT_INTERNAL_LABEL (file, "L", CODE_LABEL_NUMBER (deferred_plabels[i].internal_label)); - ASM_OUTPUT_INT (file, deferred_plabels[i].symbol); + assemble_integer (deferred_plabels[i].symbol, 4, 1); } n_deferred_plabels = 0; } @@ -3065,10 +3065,9 @@ print_operand (file, x, code) } if (GET_CODE (x) == REG) { + fputs (reg_names [REGNO (x)], file); if (FP_REG_P (x) && GET_MODE_SIZE (GET_MODE (x)) <= 4 && (REGNO (x) & 1) == 0) - fprintf (file, "%sL", reg_names [REGNO (x)]); - else - fprintf (file, "%s", reg_names [REGNO (x)]); + fputs ("L", file); } else if (GET_CODE (x) == MEM) { diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h index 005a19e..8e1d89a 100644 --- a/gcc/config/pa/pa.h +++ b/gcc/config/pa/pa.h @@ -2018,13 +2018,20 @@ DTORS_SECTION_FUNCTION fprintf (FILE, "\t.word 0x%lx\n", l); \ } while (0) -/* This is how to output an assembler line defining an `int' constant. */ +/* This is how to output an assembler line defining an `int' constant. + + This is made more complicated by the fact that functions must be + prefixed by a P% as well as code label references for the exception + table -- otherwise the linker chokes. */ #define ASM_OUTPUT_INT(FILE,VALUE) \ { fputs ("\t.word ", FILE); \ if (function_label_operand (VALUE, VOIDmode) \ && !TARGET_PORTABLE_RUNTIME) \ fputs ("P%", FILE); \ + if (in_section == in_named \ + && ! strcmp (".gcc_except_table", in_named_name))\ + fputs ("P%", FILE); \ output_addr_const (FILE, (VALUE)); \ fputs ("\n", FILE);} |