[PATCH] Fix crash parsing pragma after a case or a default
Olivier Goffart
ogoffart at kde.org
Fri Sep 20 04:40:54 PDT 2013
I made the loop at a lower level.
Notice that the diagnostic is slightly different when there is a #pragma after
a case: and no statements. But I think it does not matter.
On Wednesday 18 September 2013 14:40:40 Richard Smith wrote:
> 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 --------------
A non-text attachment was scrubbed...
Name: 0001-Fix-crash-when-there-is-a-pragma-right-after-a-case-.patch
Type: text/x-patch
Size: 2799 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130920/65ef2c5c/attachment.bin>
More information about the cfe-commits
mailing list