The testcase from PR/2161: #define ONE else if (0) { } #define TEN ONE ONE ONE ONE ONE ONE ONE ONE ONE ONE #define HUN TEN TEN TEN TEN TEN TEN TEN TEN TEN TEN #define THOU HUN HUN HUN HUN HUN HUN HUN HUN HUN HUN
void foo() { if (0) { } /* 11,000 else if's. */ THOU THOU THOU THOU THOU THOU THOU THOU THOU THOU THOU } as well as the following: #define OONE && (a() #define OTEN OONE OONE OONE OONE OONE OONE OONE OONE OONE OONE #define OHUN OTEN OTEN OTEN OTEN OTEN OTEN OTEN OTEN OTEN OTEN #define OTHOU OHUN OHUN OHUN OHUN OHUN OHUN OHUN OHUN OHUN OHUN #define CONE ) #define CTEN CONE CONE CONE CONE CONE CONE CONE CONE CONE CONE #define CHUN CTEN CTEN CTEN CTEN CTEN CTEN CTEN CTEN CTEN CTEN #define CTHOU CHUN CHUN CHUN CHUN CHUN CHUN CHUN CHUN CHUN CHUN void foo() { a() /* 11,000 right-associated &&'s with side effects. */ OTHOU OTHOU OTHOU OTHOU OTHOU OTHOU OTHOU OTHOU OTHOU OTHOU OTHOU CTHOU CTHOU CTHOU CTHOU CTHOU CTHOU CTHOU CTHOU CTHOU CTHOU CTHOU; } fail with a segmentation fault do to recursion that is proportional to the size of the program. -- Summary: [4.3/4.4/4.5 Regression] unbounded recursion in the gimplifier Product: gcc Version: unknown Status: UNCONFIRMED Keywords: rejects-valid Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: bonzini at gnu dot org BugsThisDependsOn: 2161 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40760