--- gcc/config/vax/vax.h 2018/04/24 18:10:25 1.1 +++ gcc/config/vax/vax.h 2018/04/24 18:16:04 1.1.1.2 @@ -20,7 +20,7 @@ the Free Software Foundation, 675 Mass A /* Names to predefine in the preprocessor for this target machine. */ -#define CPP_PREDEFINES "-Dvax -Dunix" +#define CPP_PREDEFINES "-Dvax -Dunix -Asystem(unix) -Asystem(bsd) -Acpu(vax) -Amachine(vax)" /* If using g-format floating point, alter math.h. */ @@ -541,6 +541,8 @@ gen_rtx (PLUS, Pmode, frame, gen_rtx (CO to the start of the trampoline. */ #define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT) \ { \ + emit_insn (gen_rtx (ASM_INPUT, VOIDmode, \ + "movpsl -(sp)\n\tpushal 1(pc)\n\trei")); \ emit_move_insn (gen_rtx (MEM, HImode, TRAMP), \ gen_rtx (MEM, HImode, FNADDR)); \ emit_move_insn (gen_rtx (MEM, SImode, plus_constant (TRAMP, 4)), CXT);\ @@ -675,7 +677,14 @@ gen_rtx (PLUS, Pmode, frame, gen_rtx (CO (This much is the easy part.) */ #define GO_IF_NONINDEXED_ADDRESS(X, ADDR) \ { register rtx xfoob = (X); \ - if (GET_CODE (xfoob) == REG) goto ADDR; \ + if (GET_CODE (xfoob) == REG) \ + { \ + extern rtx *reg_equiv_mem; \ + if (! reload_in_progress \ + || reg_equiv_mem[REGNO (xfoob)] == 0 \ + || INDIRECTABLE_ADDRESS_P (reg_equiv_mem[REGNO (xfoob)])) \ + goto ADDR; \ + } \ if (CONSTANT_ADDRESS_P (xfoob)) goto ADDR; \ if (INDIRECTABLE_ADDRESS_P (xfoob)) goto ADDR; \ xfoob = XEXP (X, 0); \