--- gcc/config/clipper/clipper.h 2018/04/24 18:14:06 1.1.1.2 +++ gcc/config/clipper/clipper.h 2018/04/24 18:20:41 1.1.1.3 @@ -1,6 +1,5 @@ /* Definitions of target machine for GNU compiler. Clipper version. - Copyright (C) 1987, 1988, 1991, 1993 Free Software Foundation, Inc. - + Copyright (C) 1987, 1988, 1991, 1993, 1994 Free Software Foundation, Inc. Contributed by Holger Teutsch (holger@hotbso.rhein-main.de) This file is part of GNU CC. @@ -52,17 +51,8 @@ extern int target_flags; #define TARGET_DEFAULT TARGET_C300 #endif -/* Omit frame pointer at -O2. Inline functions at -O3. */ - -#define OPTIMIZATION_OPTIONS(LEVEL) \ -{ \ - if ((LEVEL) >= 2) \ - { \ - flag_omit_frame_pointer = 1; \ - } \ - if ((LEVEL) >= 3) \ - flag_inline_functions = 1; \ -} +/* Show that we can debug generated code without a frame pointer. */ +#define CAN_DEBUG_WITHOUT_FP /* Target machine storage layout */ @@ -423,9 +413,11 @@ enum reg_class { NO_REGS, GENERAL_REGS, ((N) == 0 || (N) == 1 || (N) == 16 || (N) == 17) /* Define this if PCC uses the nonreentrant convention for returning - structure and union values. */ + structure and union values. Old Green Hills C-Clipper returns static + structs but the newer Apogee compiler passes structs as hidden arg 0. + Structs etc are always passed in memory */ -#define PCC_STATIC_STRUCT_RETURN +/* #define PCC_STATIC_STRUCT_RETURN */ /* Define a data type for recording info about an argument list @@ -474,9 +466,10 @@ struct _clipper_cum_args { int num; int /* internal helper : size of an argument */ #define CLIPPER_ARG_SIZE(MODE, TYPE) \ -((MODE) != BLKmode \ - ? (GET_MODE_SIZE (MODE) + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD \ - : (int_size_in_bytes (TYPE) + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD) +(((MODE) != BLKmode \ + ? (GET_MODE_SIZE (MODE) + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD \ + : (int_size_in_bytes (TYPE) + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD) \ + * UNITS_PER_WORD) /* Update the data in CUM to advance over an argument of mode MODE and data type TYPE. @@ -503,7 +496,7 @@ do \ { \ int align = FUNCTION_ARG_BOUNDARY (MODE, TYPE) / BITS_PER_UNIT; \ (CUM).size += align - 1; \ - (CUM).size &= align - 1; \ + (CUM).size &= ~(align - 1); \ (CUM).size += CLIPPER_ARG_SIZE (MODE, TYPE); \ } \ } while (0) @@ -888,7 +881,6 @@ do \ case MOD: \ case UMOD: \ return COSTS_N_INSNS (40); \ - case LSHIFT: \ case ASHIFT: \ case LSHIFTRT: \ case ASHIFTRT: \