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))