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

Reply via email to