aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/mmix/mmix.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/mmix/mmix.h')
-rw-r--r--gcc/config/mmix/mmix.h28
1 files changed, 12 insertions, 16 deletions
diff --git a/gcc/config/mmix/mmix.h b/gcc/config/mmix/mmix.h
index 5da23882b9b..4829f8fc91b 100644
--- a/gcc/config/mmix/mmix.h
+++ b/gcc/config/mmix/mmix.h
@@ -261,7 +261,7 @@ extern int target_flags;
/* Node: Storage Layout */
-/* I see no bitfield instructions. Anyway, the common order is from low
+/* I see no bit-field instructions. Anyway, the common order is from low
to high, as the power of two, hence little-endian. */
#define BITS_BIG_ENDIAN 0
#define BYTES_BIG_ENDIAN 1
@@ -735,8 +735,13 @@ enum reg_class
/* This *sounds* good, but does not seem to be implemented correctly to
be a win; at least it wasn't in 2.7.2. FIXME: Check and perhaps
- replace with a big comment. */
-#define FUNCTION_ARG_CALLEE_COPIES(CUM, MODE, TYPE, NAMED) 1
+ replace with a big comment.
+ The definition needs to match or be a subset of
+ FUNCTION_ARG_PASS_BY_REFERENCE, since not all callers check that before
+ usage. Watch lots of C++ test-cases fail if set to 1, for example
+ g++.dg/init/byval1.C. */
+#define FUNCTION_ARG_CALLEE_COPIES(CUM, MODE, TYPE, NAMED) \
+ mmix_function_arg_pass_by_reference (&(CUM), MODE, TYPE, NAMED)
typedef struct { int regs; int lib; } CUMULATIVE_ARGS;
@@ -768,10 +773,10 @@ typedef struct { int regs; int lib; } CUMULATIVE_ARGS;
mmix_function_outgoing_value (VALTYPE, FUNC)
#define LIBCALL_VALUE(MODE) \
- gen_rtx_REG (MODE, MMIX_OUTGOING_RETURN_VALUE_REGNUM)
+ gen_rtx_REG (MODE, MMIX_RETURN_VALUE_REGNUM)
#define FUNCTION_VALUE_REGNO_P(REGNO) \
- ((REGNO) == MMIX_OUTGOING_RETURN_VALUE_REGNUM)
+ mmix_function_value_regno_p (REGNO)
/* Node: Aggregate Return */
@@ -795,10 +800,6 @@ typedef struct { int regs; int lib; } CUMULATIVE_ARGS;
#define EPILOGUE_USES(REGNO) \
((REGNO) == MMIX_INCOMING_RETURN_ADDRESS_REGNUM)
-#define ASM_OUTPUT_MI_THUNK(FILE, THUNK_FNDECL, DELTA, FUNCTION) \
- mmix_asm_output_mi_thunk (FILE, THUNK_FNDECL, DELTA, FUNCTION)
-
-
/* Node: Profiling */
#define FUNCTION_PROFILER(FILE, LABELNO) \
mmix_function_profiler (FILE, LABELNO)
@@ -991,9 +992,6 @@ typedef struct { int regs; int lib; } CUMULATIVE_ARGS;
#define ASM_OUTPUT_LABELREF(STREAM, NAME) \
mmix_asm_output_labelref (STREAM, NAME)
-#define ASM_OUTPUT_INTERNAL_LABEL(STREAM, PREFIX, NUM) \
- mmix_asm_output_internal_label (STREAM, PREFIX, NUM)
-
/* We insert a ":" to disambiguate against user symbols like L5. */
#define ASM_GENERATE_INTERNAL_LABEL(LABEL, PREFIX, NUM) \
sprintf (LABEL, "*%s:%ld", PREFIX, (long)(NUM))
@@ -1002,9 +1000,7 @@ typedef struct { int regs; int lib; } CUMULATIVE_ARGS;
":" is seen in the object file; we don't really want that mmixal
feature visible there. We don't want the default, which uses a dot;
that'd be incompatible with mmixal. */
-#define ASM_FORMAT_PRIVATE_NAME(OUTPUT, NAME, LABELNO) \
- ((OUTPUT) = (char *) alloca (strlen ((NAME)) + 2 + 10), \
- sprintf ((OUTPUT), "%s::%d", (NAME), (LABELNO)))
+#define ASM_PN_FORMAT "%s::%lu"
#define ASM_OUTPUT_DEF(STREAM, NAME, VALUE) \
mmix_asm_output_def (STREAM, NAME, VALUE)
@@ -1119,7 +1115,7 @@ typedef struct { int regs; int lib; } CUMULATIVE_ARGS;
/* Node: SDB and DWARF */
-#define DWARF2_DEBUGGING_INFO
+#define DWARF2_DEBUGGING_INFO 1
#define DWARF2_ASM_LINE_DEBUG_INFO 1
/* Node: Misc */