Module Name: src Committed By: martin Date: Tue Dec 19 12:24:21 UTC 2023
Modified Files: src/external/gpl3/gcc/dist/gcc [netbsd-10]: reload1.c Log Message: Pull up following revision(s) (requested by kalvisd in ticket #507): external/gpl3/gcc.old/dist/gcc/reload1.c: revision 1.12 (applied to external/gpl3/gcc/dist/gcc/reload1.c) gcc: vax: gcc/reload1.c: PR port-vax/57646 Where an output register might be reloaded, and it is a memory reference, and the address is auto-incremented, any previously reloaded copy of the address must be invalidated. XXXKD: Hidden within ``#ifdef NB_FIX_VAX_BACKEND'' and enabled only for vax at the moment. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.9.6.1 src/external/gpl3/gcc/dist/gcc/reload1.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/external/gpl3/gcc/dist/gcc/reload1.c diff -u src/external/gpl3/gcc/dist/gcc/reload1.c:1.9 src/external/gpl3/gcc/dist/gcc/reload1.c:1.9.6.1 --- src/external/gpl3/gcc/dist/gcc/reload1.c:1.9 Sun Apr 11 00:02:11 2021 +++ src/external/gpl3/gcc/dist/gcc/reload1.c Tue Dec 19 12:24:21 2023 @@ -8377,6 +8377,44 @@ emit_reload_insns (class insn_chain *cha reg_last_reload_reg[out_regno + k] = 0; } } + +#ifdef NB_FIX_VAX_BACKEND +#if AUTO_INC_DEC + /* Where an output register might be reloaded, and it is a + memory reference, and the address is auto-incremented, any + previously reloaded copy of the address must be + invalidated. */ + if (i < 0 + && rld[r].out != 0 + && MEM_P (rld[r].out)) + { + rtx out = XEXP (rld[r].out, 0); /* address expression */ + enum rtx_code code = GET_CODE (out); + + if (code != POST_INC && code != POST_DEC + && code != PRE_INC && code != PRE_DEC) + { + /* do nothing */ + } + else + { + int out_regno = REGNO (XEXP (out, 0)); + machine_mode mode = GET_MODE (XEXP (out, 0)); + + /* for the moment, handle only the case where out_regno + is a hardware register */ + + if (HARD_REGISTER_NUM_P (out_regno)) + { + int k, out_nregs = hard_regno_nregs (out_regno, mode); + + for (k = 0; k < out_nregs; k++) + reg_last_reload_reg[out_regno + k] = 0; + } + } + } +#endif /* AUTO_INC_DEC */ +#endif } reg_reloaded_dead |= reg_reloaded_died; }