https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111971
Bug ID: 111971 Summary: ICE: maximum number of generated reload insns per insn achieved (90) Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: guojiufu at gcc dot gnu.org Target Milestone: --- For the below code, an ICE occurs when built with "-m32 -O2". ``` void foo (unsigned long long *a) { register long long d asm ("r0") = 0x24; long long n; asm ("mr %0, %1" : "=r"(n) : "r"(d)); *a++ = n; } ``` --------------- 8 | } | ^ 0x2000007c4ca3 __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58 0x2000007c4f07 generic_start_main ../csu/libc-start.c:360 0x2000007c4f07 __libc_start_main_impl ../sysdeps/unix/sysv/linux/powerpc/libc-start.c:109 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <file:///usr/share/doc/gcc-13/README.Bugs> for instructions. ---------------- It is ok if it is "register long d asm ("r0") = 0x24;". The 'd' is 'long long' DImode(64bits), but with -m32, "r0" is not 64bits without -mpowerpc64. So, it would say this code would be invalid in some aspects.