https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117185
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to John Paul Adrian Glaubitz from comment #4) > (In reply to John Paul Adrian Glaubitz from comment #3) > > (In reply to Richard Biener from comment #2) > > > I would suggest to change reload_in_progress || lra_in_progress back to > > > just reload_in_progress for resolve_reload_operand - this code can't work > > > for LRA. > > > > OK, I'll give it a try. > > It fails in get_unaligned_address() now: > > during RTL pass: reload > ../../../libgomp/target.c: In function 'gomp_map_vars_existing': > checking for unistd.h... ../../../libgomp/target.c:661:1: internal compiler > error: in get_unaligned_address, at config/alpha/alpha.cc:1577 > 661 | } > | ^ > yes > mv -f .deps/oacc-mem.Tpo .deps/oacc-mem.Plo > checking for dlfcn.h... 0x1232b5033 internal_error(char const*, ...) > ../../gcc/diagnostic-global-context.cc:517 > 0x1232676d7 fancy_abort(char const*, int, char const*) > ../../gcc/diagnostic.cc:1533 > 0x121f528bf get_unaligned_address(rtx_def*) > ../../gcc/config/alpha/alpha.cc:1577 > 0x121f55e03 alpha_expand_mov_nobwx(machine_mode, rtx_def**) > ../../gcc/config/alpha/alpha.cc:2346 > 0x122c4f6c3 gen_movqi(rtx_def*, rtx_def*) > ../../gcc/config/alpha/alpha.md:4241 > 0x120bd8057 rtx_insn* insn_gen_fn::operator()<rtx_def*, rtx_def*>(rtx_def*, > rtx_def*) const > ../../gcc/recog.h:442 > 0x120eb866f emit_move_insn_1(rtx_def*, rtx_def*) > ../../gcc/expr.cc:4577 > 0x120eb9747 emit_move_insn(rtx_def*, rtx_def*) > ../../gcc/expr.cc:4747 > 0x12137c6bb lra_emit_move(rtx_def*, rtx_def*) > ../../gcc/lra.cc:509 > 0x1213a523b curr_insn_transform > ../../gcc/lra-constraints.cc:4750 > 0x1213a8ed7 lra_constraints(bool) > ../../gcc/lra-constraints.cc:5496 > 0x121384443 lra(_IO_FILE*, int) > ../../gcc/lra.cc:2445 > 0x1212fa08f do_reload > ../../gcc/ira.cc:5977 > 0x1212fa9a7 execute > ../../gcc/ira.cc:6165 > Please submit a full bug report, with preprocessed source (by using > -freport-bug). > Please include the complete backtrace with any bug report. > See <https://gcc.gnu.org/bugs/> for instructions. > > Is that another case which should be reload-only? >From a quick look this is probably fallout of not handling the now disabled case: ;; Return 1 if OP is any memory location. During reload a pseudo matches. (define_special_predicate "any_memory_operand" (match_code "mem,reg,subreg") { if (SUBREG_P (op)) op = SUBREG_REG (op); if (MEM_P (op)) return true; if (reload_in_progress && REG_P (op)) { unsigned regno = REGNO (op); if (HARD_REGISTER_NUM_P (regno)) return false; else return reg_renumber[regno] < 0; } reg_renumber should also work for LRA, but alpha_expand_mov_nobwx doesn't seem to be prepared for unaligned mems here, aka it misses the if (reload_in_progress) case the aligned case has. This is probably the core of the PR57032 issue.