[PATCH] Fix crash parsing pragma after a case or a default

Richard Smith richard at metafoo.co.uk
Wed Sep 18 14:40:40 PDT 2013


I think the loop should be at a lower level. This also crashes today (while
diagnosing an empty loop body):

int f() {
  if (false)
#pragma weak f
    return 0;
  return 1;
}

... and if we didn't have that diagnostic, we'd generate wrong code instead.


On Wed, Sep 18, 2013 at 1:09 AM, Olivier Goffart <ogoffart at kde.org> wrote:

> On Monday 16 September 2013 11:43:00 Richard Smith wrote:
> > I don't particularly like adding a NullStmt here -- there was no null
> > statement in the source code, so this is not a faithful AST
> representation
> > of the source.
> >
> > This approach seems like it will also accept this:
> >
> > switch (t) {
> >   case 1:
> > #pragma weak t
> > }
> >
> > We should probably reject this, because there is no statement after the
> > case label. (That said, GCC accepts the above code, and fully treats
> these
> > pragmas as being statement-like entities, so your patch would be
> > bug-compatible with them.)
> >
> > Does the same issue exist for goto labels?
>
> The problem was the same for goto.
>
> I attached a new patch that reject invalid code.
>
> --
> Olivier
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130918/3c0da970/attachment.html>


More information about the cfe-commits mailing list