https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113467
--- Comment #9 from Sam James <sjames at gcc dot gnu.org> --- I get an ICE with that: ``` /tmp/build/./gcc/xgcc -B/tmp/build/./gcc/ -B/tmp/gcc/x86_64-pc-linux-gnu/bin/ -B/tmp/gcc/x86_64-pc-linux-gnu/lib/ -isystem /tmp/gcc/x86_64-pc-linux-gnu/include -isystem /tmp/gcc/x86_64-pc-linux-gnu/sys-include -g -O2 -m32 -O2 -g -O2 -DIN_GCC -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fpic -mlong-double-80 -DUSE_ELF_SYMVER -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -fpic -mlong-double-80 -DUSE_ELF_SYMVER -I. -I. -I../../.././gcc -I/home/sam/git/gcc/libgcc -I/home/sam/git/gcc/libgcc/. -I/home/sam/git/gcc/libgcc/../gcc -I/home/sam/git/gcc/libgcc/../include -I/home/sam/git/gcc/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o bid128_div.o -MT bid128_div.o -MD -MP -MF bid128_div.dep -c /home/sam/git/gcc/libgcc/config/libbid/bid128_div.c during GIMPLE pass: vect In file included from /home/sam/git/gcc/libgcc/config/libbid/bid_internal.h:27, from /home/sam/git/gcc/libgcc/config/libbid/bid_div_macros.h:27, from /home/sam/git/gcc/libgcc/config/libbid/bid128_div.c:25: /home/sam/git/gcc/libgcc/config/libbid/bid128_div.c: In function '__bid128_div': /home/sam/git/gcc/libgcc/config/libbid/bid_conf.h:181:20: internal compiler error: in single_pred_edge, at basic-block.h:342 181 | #define bid128_div __bid128_div | ^~~~~~~~~~~~ /home/sam/git/gcc/libgcc/config/libbid/bid_conf.h:1047:6: note: in definition of macro 'BID128_FUNCTION_ARG2' 1047 | fn_name (UINT128 bid_##arg_name1, \ | ^~~~~~~ /home/sam/git/gcc/libgcc/config/libbid/bid128_div.c:36:23: note: in expansion of macro 'bid128_div' 36 | BID128_FUNCTION_ARG2 (bid128_div, x, y) | ^~~~~~~~~~ Please submit a full bug report, with preprocessed source (by using -freport-bug). See <https://gcc.gnu.org/bugs/> for instructions. make[4]: *** [Makefile:653: bid128_div.o] Error 1 ``` Reduced: ``` typedef struct { int w; } UINT128; UINT128 get_BID128_coeff; int get_BID128_coeff_0_1, get_BID128_coeff_0_0, get_BID128_tmp2, get_BID128_expon; void get_BID128() { while ((get_BID128_coeff.w || get_BID128_coeff_0_0) && get_BID128_expon) { if (get_BID128_tmp2) get_BID128_coeff_0_1++; get_BID128_expon--; } } ```