https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112536
--- Comment #11 from Sam James <sjames at gcc dot gnu.org> --- Reduced from llvm: ``` void swap() { unsigned Defs, Kills; while (Kills && Defs) { int __trans_tmp_3 = __builtin_ctz(Kills); unsigned KReg = __builtin_ctz(Defs), DReg = __trans_tmp_3; swap(); Kills &= ~(1 << KReg); Defs &= ~(1 << DReg); } } ```