The following program: -------------------------------- int foo(int dest) { int x = 0; __label__ l1, l2, l3; __label__ *lb[] = { &&l1, &&l2, &&l3 };
goto **lb[dest]; l1: x += 1; l2: x += 1; l3: x += 1; return x; } -------------------------------- produce an infinite loop in diagnostic when compiled with G++ 3.4.3: label.cc:5: error: expected identifier before '*' token label.cc:5: error: expected `,' before '*' token label.cc:5: error: expected identifier before '*' token label.cc:5: error: expected `,' before '*' token label.cc:5: error: expected identifier before '*' token label.cc:5: error: expected `,' before '*' token label.cc:5: error: expected identifier before '*' token label.cc:5: error: expected `,' before '*' token label.cc:5: error: expected identifier before '*' token label.cc:5: error: expected `,' before '*' token label.cc:5: error: expected identifier before '*' token label.cc:5: error: expected `,' before '*' token label.cc:5: error: expected identifier before '*' token [....] -- Summary: Infinite loop in diagnostic Product: gcc Version: 3.4.3 Status: UNCONFIRMED Keywords: diagnostic Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: giovannibajo at libero dot it CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20563