https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71621
--- Comment #2 from Arseny Solokha <asolokha at gmx dot com> --- Another one, just for the record: int hf, sv, zz, aj; void dn (int xb, int bl) { while (zz < 1) { if (xb == 0) goto mr; while (bl < 3) { int d3; unsigned char vh; unsigned char *fj = &vh; mr: while (bl < 1) { hf += vh; ++bl; } if (xb == 0) zz = bl; if (d3 == 0) return; while (sv < 1) { --vh; aj += vh; ++sv; } } sv = 0; } } % x86_64-pc-linux-gnu-gcc-7.0.0-alpha20160703 -c -mavx2 -O3 md4gkoj3.c md4gkoj3.c: In function 'dn': md4gkoj3.c:36:1: error: unable to find a register to spill } ^ md4gkoj3.c:36:1: error: this is the insn: (insn 93 571 35 3 (set (reg:V32QI 172 [ vect_cst__257 ]) (vec_duplicate:V32QI (reg:QI 330))) 4215 {*vec_dupv32qi} (expr_list:REG_DEAD (reg:QI 330) (nil))) md4gkoj3.c:36:1: internal compiler error: in assign_by_spills, at lra-assigns.c:1417