--- gcc/config/romp/romp.h 2018/04/24 18:10:26 1.1 +++ gcc/config/romp/romp.h 2018/04/24 18:22:31 1.1.1.3 @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for ROMP chip. - Copyright (C) 1989, 1991 Free Software Foundation, Inc. + Copyright (C) 1989, 1991, 1993 Free Software Foundation, Inc. Contributed by Richard Kenner (kenner@nyu.edu) This file is part of GNU CC. @@ -21,7 +21,7 @@ the Free Software Foundation, 675 Mass A /* Names to predefine in the preprocessor for this target machine. */ -#define CPP_PREDEFINES "-Dibm032 -Dunix" +#define CPP_PREDEFINES "-Dibm032 -Dunix -Asystem(unix) -Asystem(bsd) -Acpu(ibm032) -Amachine(ibm032)" /* Print subsidiary information on the compiler version in use. */ #define TARGET_VERSION ; @@ -69,20 +69,6 @@ extern int target_flags; { "", TARGET_DEFAULT}} #define TARGET_DEFAULT 3 - -/* Define this to change the optimizations performed by default. - - This used to depend on the value of write_symbols, - but that is contrary to the general plan for GCC options. */ - -#define OPTIMIZATION_OPTIONS(LEVEL) \ -{ \ - if ((LEVEL) > 0) \ - { \ - flag_force_addr = 1; \ - flag_force_mem = 1; \ - } \ -} /* target machine storage layout */ @@ -687,7 +673,7 @@ struct rt_cargs {int gregs, fregs; }; gen_rtx (MEM, BLKmode, \ plus_constant (virtual_incoming_args_rtx, \ first_reg_offset * 4)), \ - 4 - first_reg_offset); \ + 4 - first_reg_offset, (4 - first_reg_offset) * UNITS_PER_WORD); \ PRETEND_SIZE = (4 - first_reg_offset) * UNITS_PER_WORD; \ } \ } @@ -1186,13 +1172,46 @@ struct rt_cargs {int gregs, fregs; }; is undesirable. */ #define SLOW_BYTE_ACCESS 1 -/* Define if normal loads of shorter-than-word items from memory clears - the rest of the bigs in the register. */ -#define BYTE_LOADS_ZERO_EXTEND +/* Define if operations between registers always perform the operation + on the full register even if a narrower mode is specified. */ +#define WORD_REGISTER_OPERATIONS + +/* Define if loading in MODE, an integral mode narrower than BITS_PER_WORD + will either zero-extend or sign-extend. The value of this macro should + be the code that says which one of the two operations is implicitly + done, NIL if none. */ +#define LOAD_EXTEND_OP(MODE) ZERO_EXTEND /* This is BSD, so it wants DBX format. */ #define DBX_DEBUGGING_INFO +/* Define the letter code used in a stabs entry for parameters passed + with the register attribute. + + GCC's default value, 'P', is used by dbx to refers to an external + procedure. The section 5 manual page for dbx implies that 'R' would be the + right letter, but dbx 1.5 has a bug in it that precludes its use. + Probably that is why neither hc or pcc use this. pcc puts in two + stabs entries: one for the parameter location and one for the register + location. The letter `r' (register) + would be okay, but it loses parameter attribute of the stabs entry. */ +#define DBX_REGPARM_STABS_LETTER 'R' + +/* A C expression for the integer offset value of an automatic variable + (N_LSYM) having address X (an RTX). This gets used in .stabs entries + for the local variables. Compare with the default definition. */ +extern int romp_debugger_auto_correction(); +#define DEBUGGER_AUTO_OFFSET(X) \ + (GET_CODE (X) == PLUS \ + ? romp_debugger_auto_correction (INTVAL (XEXP (X, 1)) ) \ + : 0 ) + +/* A C expression for the integer offset value of an argument (N_PSYM) + having address X (an RTX). The nominal offset is OFFSET. */ +extern int romp_debugger_arg_correction(); +#define DEBUGGER_ARG_OFFSET(OFFSET, X) \ + romp_debugger_arg_correction (OFFSET); + /* We don't have GAS for the RT yet, so don't write out special .stabs in cc1plus. */