diff options
Diffstat (limited to 'gcc/config/mmix/mmix.h')
-rw-r--r-- | gcc/config/mmix/mmix.h | 28 |
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 */ |