On Sun, 2022-01-09 at 22:19 -0800, Andrew Pinski wrote: > On Sun, Jan 9, 2022 at 8:49 PM Andras Tantos <and...@tantosonline.com > > wrote: > > All! > > > > I'm trying to port GCC to a new target, I call 'brew'. I've based > > it on > > the Moxie target mostly because of it's simplicity. > > > > I must be doing something horribly wrong as the following C code > > crokes > > in the LRA path: > > > > long long foo (long long a, long long *w) > > { > > return __builtin_add_overflow (a, a, w); > > } > > > > The error message I get is the following: > > > > during RTL pass: reload > > ../brew-gcc-build/second.c: In function ‘foo’: > > ../brew-gcc-build/second.c:5:1: internal compiler error: maximum > > number of generated reload insns per insn achieved (90) > > 5 | } > > | ^ > > 0xd23854 lra_constraints(bool) > > ../../brew-gcc/gcc/lra-constraints.c:5095 > > 0xd10322 lra(_IO_FILE*) > > ../../brew-gcc/gcc/lra.c:2336 > > 0xcc86d9 do_reload > > ../../brew-gcc/gcc/ira.c:5932 > > 0xcc86d9 execute > > ../../brew-gcc/gcc/ira.c:6118 > > Please submit a full bug report, > > with preprocessed source if appropriate. > > Please include the complete backtrace with any bug report. > > See <https://gcc.gnu.org/bugs/> for instructions. > > This usually means the move instruction is being reloaded over and > over again as you describe below. > I think you should have one merged movsi instruction which handles > all > of the constraints together. mov is "special" in that it needs to be > done that way otherwise this happens. > But really there seems to be another issue where (subreg:SI (reg:DI)) > is not being accepted for the xor set too. > What regclasses are being chosen for the reg DI mode? Etc. > > Thanks, > Andrew Pinski >
That's what it was: after merging all my movsi variants, the problem went away. Thanks for the help! Andras