https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91173
Bug ID: 91173 Summary: [9 Regression] ICE: in int_mode_for_mode, at stor-layout.c:403 Product: gcc Version: 9.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: gzauhar at gmail dot com Target Milestone: --- GCC-9.1.0 ICEs with following test case (I used c-reduce to reduce it) when compiling with -O1 flag. It compiles fine with -O0. Snapshot gcc-9-20190706 also ICEs. GCC-8.3.0 works fine. ------------------------------------------------------ class a { int b; void *c; public: bool aa(); int &ab() { if (aa()) { void *d(c); return static_cast<int *>(d)[b]; } return *(int *)0; } }; typedef enum {E} e; class f : public a { int g; public: int ac() { if (g) return 1; return ac(); } }; int *ad; struct h { static int ae(e, int *m) { f ag; int *ah; while (!0) { ad = &ag.ab(); ah = ad + ag.ac(); while (ad < ah) *m = *ad++; } } }; template <class, class> void i(int *, int *, int, int *, e n, int *o) { h::ae(n, o); } int aq, ar, as, at, au; void aw() { i<int, bool>(&aq, &ar, as, &at, (e)0, &au); } ------------------------------------------------------ $ /home/gz/apps/gcc-9.1.0/bin/g++ -Wall -Wextra -pedantic -O0 -c crash.cpp $ /home/gz/apps/gcc-9.1.0/bin/g++ -Wall -Wextra -pedantic -O1 -c crash.cpp during RTL pass: expand crash.cpp: In function 'void aw()': crash.cpp:35:14: internal compiler error: in int_mode_for_mode, at stor-layout.c:403 35 | *m = *ad++; | ^~~~~ 0x6160eb int_mode_for_mode(machine_mode) ../.././gcc/stor-layout.c:403 0x91aebd emit_move_via_integer ../.././gcc/expr.c:3357 0x92301f emit_move_insn_1(rtx_def*, rtx_def*) ../.././gcc/expr.c:3718 0x923332 emit_move_insn(rtx_def*, rtx_def*) ../.././gcc/expr.c:3786 0x9097e3 copy_to_reg(rtx_def*) ../.././gcc/explow.c:602 0x909a81 memory_address_addr_space(machine_mode, rtx_def*, unsigned char) ../.././gcc/explow.c:472 0x91feac expand_expr_real_1(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool) ../.././gcc/expr.c:10270 0x92a3eb store_expr(tree_node*, rtx_def*, int, bool, bool) ../.././gcc/expr.c:5674 0x92b5e0 expand_assignment(tree_node*, tree_node*, bool) ../.././gcc/expr.c:5436 0x82d6b8 expand_gimple_stmt_1 ../.././gcc/cfgexpand.c:3752 0x82d6b8 expand_gimple_stmt ../.././gcc/cfgexpand.c:3850 0x8325c7 expand_gimple_basic_block ../.././gcc/cfgexpand.c:5886 0x83495e execute ../.././gcc/cfgexpand.c:6509 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. $ /home/gz/apps/gcc-9.1.0/bin/g++ -v Using built-in specs. COLLECT_GCC=/home/gz/apps/gcc-9.1.0/bin/g++ COLLECT_LTO_WRAPPER=/home/gz/apps/gcc-9.1.0/libexec/gcc/x86_64-pc-linux-gnu/9.1.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ./configure --prefix=/home/gz/apps/gcc-9.1.0 --enable-languages=c,c++ --disable-multilib --disable-nls --enable-linker-build-id --enable-default-pie Thread model: posix gcc version 9.1.0 (GCC)