aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1995-12-24 22:46:32 -0700
committerJeff Law <law@gcc.gnu.org>1995-12-24 22:46:32 -0700
commit3ba1236fc8cac5ccf80f7f53a8b9252b66403b56 (patch)
treebe5cbb1f4b92bf94e9c6ad10fd643b2b86aec2b7 /gcc
parent435b1237b12c65e34bb7475ccccd9b06edefa301 (diff)
downloadgcc-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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/pa/pa.c7
-rw-r--r--gcc/config/pa/pa.h9
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);}