https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99199
Bug ID: 99199 Summary: [9/10/11 Regression] Very large boolean expression leads to quite a few return statements Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: tkoenig at gcc dot gnu.org Target Milestone: --- Created attachment 50233 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50233&action=edit C test case The attached test case translated rather strangely with -O3. The instruction sequence is very long, and it generates 42 return instructions, quite a few of them at the end: $ gcc -O3 -S tr.c $ wc -l tr.s 504 tr.s $ grep ret tr.s | wc -l 42 ... L24: movl %r9d, %eax orl %r8d, %eax xorl $1, %eax jmp .L112 .L131: ret .L132: ret .L140: ret .L141: ret .L145: ret .L146: ret .L148: ret .L142: ret .L143: ret .L150: ret .L152: ret .L151: ret .L138: ret .L129: ret .L147: ret .cfi_endproc Seems to have been introduced with gcc 9, gcc 8 is fine.