/* Definitions of target machine for GNU compiler, for the pdp-11
- Copyright (C) 1994, 1995 Free Software Foundation, Inc.
+ Copyright (C) 1994, 1995, 1996, 1998 Free Software Foundation, Inc.
Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
This file is part of GNU CC.
#define N_REG_CLASSES (int) LIM_REG_CLASSES
/* have to allow this till cmpsi/tstsi are fixed in a better way !! */
-#define SMALL_REGISTER_CLASSES
+#define SMALL_REGISTER_CLASSES 1
/* Since GENERAL_REGS is the same class as ALL_REGS,
don't give it a different class number; just make it an alias. */
/* should probably return DImode and DFmode in memory,lest
we fill up all regs!
- have to, else we crash - exceptio: maybe return result in
+ have to, else we crash - exception: maybe return result in
ac0 if DFmode and FPU present - compatibility problem with
libraries for non-floating point ...
*/
when the function gets a structure-value-address as an
invisible first argument. */
-#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \
+#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \
((CUM) = 0)
/* Update the data in CUM to advance over an argument
`tablejump' insn. */
#define CASE_TAKES_INDEX_RAW
-/* Define this if the tablejump instruction expects the table
- to contain offsets from the address of the table.
- Do not define this if the table should contain absolute addresses. */
-/* #define CASE_VECTOR_PC_RELATIVE */
+/* Define as C expression which evaluates to nonzero if the tablejump
+ instruction expects the table to contain offsets from the address of the
+ table.
+ Do not define this if the table should contain absolute addresses. */
+/* #define CASE_VECTOR_PC_RELATIVE 1 */
/* Specify the tree operation to be used to convert reals to integers. */
#define IMPLICIT_FIX_EXPR FIX_ROUND_EXPR
#define ASM_GLOBALIZE_LABEL(FILE,NAME) \
do { fputs ("\t.globl ", FILE); assemble_name (FILE, NAME); fputs("\n", FILE); } while (0)
-/* This is how to output a reference to a user-level label named NAME.
- `assemble_name' uses this. */
+/* The prefix to add to user-visible assembler symbols. */
-#define ASM_OUTPUT_LABELREF(FILE,NAME) \
- fprintf (FILE, "_%s", NAME)
+#define USER_LABEL_PREFIX "_"
/* This is how to output an internal numbered label where
PREFIX is the class of label and NUM is the number within the class. */
fprintf (FILE, "\t.word L_%d\n", VALUE)
/* This is how to output an element of a case-vector that is relative.
- (the pdp does not use such vectors,
- but we must define this macro anyway.) */
+ Don't define this if it is not supported. */
-#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, VALUE, REL) \
- fprintf (FILE, "\tERROR @L%d-@L%d ! error should not be used\n", VALUE, REL)
+/* #define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, VALUE, REL) */
/* This is how to output an assembler line
that says to advance the location counter
if (TARGET_SPLIT) \
abort(); \
\
- ASM_OUTPUT_INT (FILE, gen_rtx(CONST_INT, VOIDmode, 0x9400+STATIC_CHAIN_REGNUM)); \
+ ASM_OUTPUT_INT (FILE, GEN_INT (0x9400+STATIC_CHAIN_REGNUM)); \
ASM_OUTPUT_INT (FILE, const0_rtx); \
- ASM_OUTPUT_INT (FILE, gen_rtx(CONST_INT, VOIDmode, 0x0058)); \
+ ASM_OUTPUT_INT (FILE, GEN_INT(0x0058)); \
ASM_OUTPUT_INT (FILE, const0_rtx); \
}
LEVEL is the optimization level specified; 2 if -O2 is
specified, 1 if -O is specified, and 0 if neither is specified. */
-#define OPTIMIZATION_OPTIONS(LEVEL) \
+#define OPTIMIZATION_OPTIONS(LEVEL,SIZE) \
{ \
if (LEVEL >= 3) \
{ \
- flag_inline_functions = 1; \
+ if (! SIZE) \
+ flag_inline_functions = 1; \
flag_omit_frame_pointer = 1; \
/* flag_unroll_loops = 1; */ \
} \
else if (GET_MODE(X) == SImode) \
total = COSTS_N_INSNS(6); \
else \
- abort(); \
+ total = COSTS_N_INSNS(2); \
break; \
/* case LSHIFT: */ \
case ASHIFT: \
else if (GET_MODE(X) == QImode) \
{ \
if (GET_CODE(XEXP (X,1)) != CONST_INT) \
- abort(); \
+ total = COSTS_N_INSNS(8); /* worst case */ \
+ else \
total = COSTS_N_INSNS(INTVAL(XEXP (X,1))); \
} \
else if (GET_MODE(X) == HImode) \