https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99041
Bug ID: 99041 Summary: combine creates invalid address which ICEs in decompose_normal_address Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: bergner at gcc dot gnu.org Target Milestone: --- Created attachment 50153 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50153&action=edit creduced test case For a reduced test case from the Eigen library with some MMA builtin usage, we are ICEing in decompose_normal_address(): bergner@pike:~/gcc/BUGS/MMA/CHIP$ xg++ -B/path/to/gcc -S -mcpu=power10 -std=c++03 -nostdinc -fno-check-new -fno-common -fstrict-aliasing -ansi -O2 -w polynomialsolver.ii during RTL pass: reload polynomialsolver.ii: In function ‘void test_polynomialsolver()’: polynomialsolver.ii:78:67: internal compiler error: in decompose_normal_address, at rtlanal.c:6754 78 | void test_polynomialsolver() { polynomialsolver< double, 5 >(5); } | ^ 0x10ecf3cf decompose_normal_address /home/bergner/gcc/gcc-fsf-mainline-pr98872/gcc/rtlanal.c:6754 0x10ecf3cf decompose_address(address_info*, rtx_def**, machine_mode, unsigned char, rtx_code) /home/bergner/gcc/gcc-fsf-mainline-pr98872/gcc/rtlanal.c:6787 0x10cda44f process_address_1 /home/bergner/gcc/gcc-fsf-mainline-pr98872/gcc/lra-constraints.c:3460 0x10cdd80b process_address /home/bergner/gcc/gcc-fsf-mainline-pr98872/gcc/lra-constraints.c:3734 0x10cdd80b curr_insn_transform /home/bergner/gcc/gcc-fsf-mainline-pr98872/gcc/lra-constraints.c:4049 0x10ce497f lra_constraints(bool) /home/bergner/gcc/gcc-fsf-mainline-pr98872/gcc/lra-constraints.c:5138 0x10cc560f lra(_IO_FILE*) /home/bergner/gcc/gcc-fsf-mainline-pr98872/gcc/lra.c:2336 0x10c535bb do_reload /home/bergner/gcc/gcc-fsf-mainline-pr98872/gcc/ira.c:5821 0x10c535bb execute /home/bergner/gcc/gcc-fsf-mainline-pr98872/gcc/ira.c:6007 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. The invalid address comes from: (insn 127 126 128 3 (set (reg:OO 138 [ _41 ]) (unspec:OO [ (mem:V16QI (reg:DI 149 [ ivtmp.49 ]) [0 MEM <ax> [(void *)_75]+0 S16 A8]) (mem:V16QI (plus:DI (plus:DI (reg:DI 142 [ _63 ]) (reg:DI 149 [ ivtmp.49 ])) (reg:DI 197)) [0 MEM <ax> [(void *)_24 + _16 * 1]+0 S16 A8]) ] UNSPEC_MMA_ASSEMBLE)) 2074 {*mma_assemble_pair} (nil))