--- gcc/config/i960/i960.h 2018/04/24 18:16:30 1.1.1.2 +++ gcc/config/i960/i960.h 2018/04/24 18:22:41 1.1.1.3 @@ -45,9 +45,13 @@ the Free Software Foundation, 675 Mass A %{!mcc:%{!mcf:-D__i960_KB -D__i960KB__ %{mic*:-D__i960KB}}}}}}}}}" /* -mic* options make characters signed by default. */ -#define SIGNED_CHAR_SPEC \ - (DEFAULT_SIGNED_CHAR ? "%{funsigned-char:-D__CHAR_UNSIGNED__}" \ - : "%{!fsigned-char:%{!mic*:-D__CHAR_UNSIGNED__}}") +/* Use #if rather than ?: because MIPS C compiler rejects ?: in + initializers. */ +#if DEFAULT_SIGNED_CHAR +#define SIGNED_CHAR_SPEC "%{funsigned-char:-D__CHAR_UNSIGNED__}" +#else +#define SIGNED_CHAR_SPEC "%{!fsigned-char:%{!mic*:-D__CHAR_UNSIGNED__}}" +#endif /* Specs for the compiler, to handle processor variations. */ #define CC1_SPEC \ @@ -80,12 +84,14 @@ the Free Software Foundation, 675 Mass A #define LIB_SPEC "%{!nostdlib:-lcg %{p:-lprof}%{pg:-lgprof}\ %{mka:-lfpg}%{msa:-lfpg}%{mca:-lfpg}%{mcf:-lfpg} -lgnu}" -/* Omit frame pointer at -O2. Inline functions at -O3. */ +/* Show we can debug even without a frame pointer. */ +#define CAN_DEBUG_WITHOUT_FP + +/* Do leaf procedure and tail call optimizations for -O2 and higher. */ #define OPTIMIZATION_OPTIONS(LEVEL) \ { \ if ((LEVEL) >= 2) \ { \ - flag_omit_frame_pointer = 1; \ target_flags |= TARGET_FLAG_LEAFPROC; \ target_flags |= TARGET_FLAG_TAILCALL; \ } \ @@ -103,8 +109,11 @@ the Free Software Foundation, 675 Mass A /* Generate DBX_DEBUGGING_INFO by default. */ #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG -/* Redefine this to print in hex like iC960. */ -#define PUT_SDB_TYPE(A) fprintf (asm_out_file, "\t.type\t0x%x;", A) +/* Redefine this to print in hex and adjust values like GNU960. The extra + bit is used to handle the type long double. Gcc does not support long + double in sdb output, but we do support the non-standard format. */ +#define PUT_SDB_TYPE(A) \ + fprintf (asm_out_file, "\t.type\t0x%x;", (A & 0xf) + 2 * (A & ~0xf)) /* Run-time compilation parameters selecting different hardware subsets. */