aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1993-03-02 18:07:56 +0000
committerRichard Stallman <rms@gnu.org>1993-03-02 18:07:56 +0000
commit24e3324a7f31b2d6bc87a5501edfde69605dfb5b (patch)
treee2da27b5d972e58646dfdf464c280c583b67950e /gcc
parentaa0cd7a228206eeee74db0f0744621ed1504065a (diff)
downloadgcc-24e3324a7f31b2d6bc87a5501edfde69605dfb5b.zip
gcc-24e3324a7f31b2d6bc87a5501edfde69605dfb5b.tar.gz
gcc-24e3324a7f31b2d6bc87a5501edfde69605dfb5b.tar.bz2
(ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Use SIZE instead of ROUNDED.
(ASM_OUTPUT_CASE_LABEL): Always use `swbeg' syntax to output switch table (m68k.md depends on this to happen). (LEGITIMATE_PIC_OPERAND_P): Treat a symbol_ref rtx with SYMBOL_REF_FLAG set a valid PIC operand. (OVERRIDE_OPTIONS): Turn off function cse when doing pic. From-SVN: r3593
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/m68k/m68kv4.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/gcc/config/m68k/m68kv4.h b/gcc/config/m68k/m68kv4.h
index 81f3726..6f3e573 100644
--- a/gcc/config/m68k/m68kv4.h
+++ b/gcc/config/m68k/m68kv4.h
@@ -234,3 +234,41 @@ do { \
} while (0)
int switch_table_difference_label_flag;
+
+#undef ASM_OUTPUT_COMMON
+#undef ASM_OUTPUT_LOCAL
+#define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED) \
+( fputs (".comm ", (FILE)), \
+ assemble_name ((FILE), (NAME)), \
+ fprintf ((FILE), ",%u\n", (SIZE)))
+
+#define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED) \
+( fputs (".lcomm ", (FILE)), \
+ assemble_name ((FILE), (NAME)), \
+ fprintf ((FILE), ",%u\n", (SIZE)))
+
+/* Override the definition in svr4.h. In m68k svr4, using swbeg is the
+ standard way to do switch table. */
+#undef ASM_OUTPUT_BEFORE_CASE_LABEL
+#define ASM_OUTPUT_BEFORE_CASE_LABEL(FILE,PREFIX,NUM,TABLE) \
+ fprintf ((FILE), "\t%s &%d\n", SWBEG_ASM_OP, XVECLEN (PATTERN (TABLE), 1));
+
+/* In m68k svr4, a symbol_ref rtx can be a valid PIC operand if it is an
+ operand of a function call. */
+#undef LEGITIMATE_PIC_OPERAND_P
+#define LEGITIMATE_PIC_OPERAND_P(X) \
+ (! symbolic_operand (X, VOIDmode) \
+ || ((GET_CODE(X) == SYMBOL_REF) && SYMBOL_REF_FLAG(X)))
+
+/* Turn off function cse if we are doing PIC. We always want function call
+ to be done as `bsr foo@PLTPC', so it will force the assembler to create
+ the PLT entry for `foo'. Doing function cse will cause the address of `foo'
+ to be loaded into a register, which is exactly what we want to avoid when
+ we are doing PIC on svr4 m68k. */
+#undef OVERRIDE_OPTIONS
+#define OVERRIDE_OPTIONS \
+{ \
+ if (flag_pic) flag_no_function_cse = 1; \
+ if (! TARGET_68020 && flag_pic == 2) \
+ error("-fPIC is not currently supported on the 68000 or 68010\n"); \
+}