[cfe-dev] Bug 17824: parse error in typedef union with -fms-extensions

Alp Toker alp at nuanti.com
Mon Nov 25 10:27:52 PST 2013


On 24/11/2013 23:17, Richard Smith wrote:
> +      // GNU libc++ uses certain MS keywords as identifiers.
>
> "libc", not "libc++". Maybe specifically say that it uses __uptr, 
> since that's the only one we're special-casing.
>
> +      if (VendorAttributesAllowed && !getLangOpts().CPlusPlus &&
> +          DS.isEmpty() && NextToken().is(tok::semi) &&
> +          PP.getSourceManager().isInSystemHeader(Loc)) {
>
> I'm worried about the generality of this check. An abstract-declarator 
> could legitimately contain "T *__uptr", followed by a semicolon.

Could you come up with an abstract declarator test case that actually 
ends in (keyword) __uptr followed by a semicolon in C mode? I couldn't.

> Can you pass in D.mayOmitIdentifier(), and treat __uptr as an 
> identifier only if (1) the identifier cannot be omitted, and (2) the 
> next token is a semicolon?

Sure, let's do this to make the check more robust.

Alp.

>
>
> On Sun, Nov 24, 2013 at 6:43 AM, Aaron Ballman <aaron at aaronballman.com 
> <mailto:aaron at aaronballman.com>> wrote:
>
>     I have no issues with this patch, but I would wait for a LGTM from
>     someone like Richard. As for merging it into the release branch, that
>     should be discussed with Bill, and this seems reasonable to apply
>     there too.
>
>     Thanks!
>
>     ~Aaron
>
>     On Sun, Nov 24, 2013 at 7:19 AM, Alp Toker <alp at nuanti.com
>     <mailto:alp at nuanti.com>> wrote:
>     >
>     > On 23/11/2013 21:06, Aaron Ballman wrote:
>     >>
>     >> On Fri, Nov 22, 2013 at 8:35 PM, Jeremy Fitzhardinge
>     <jeremy at goop.org <mailto:jeremy at goop.org>>
>     >> wrote:
>     >>>
>     >>> Hi all,
>     >>>
>     >>> I filed bug 17824 a few days ago because I'm seeing a
>     regression in the
>     >>> current svn clang vs previous versions with this structure in
>     glibc's
>     >>> /usr/include/stdlib.h when compiling with -fms-extensions:
>     >>
>     >> This is not actually a bug -- __uptr is a keyword in Microsoft
>     mode.
>     >>
>     >> http://msdn.microsoft.com/en-us/library/vstudio/aa983399.aspx
>     >>
>     >> We don't support the full semantics for it, but you can see it
>     >> declared as a TypeAttr in Attr.td.
>     >
>     >
>     > Hi Aaron,
>     >
>     > We've been good at supporting all the language standards built
>     against stock
>     > system headers so far because it's handy for writing quick tests
>     and, in
>     > this case, porting software from Windows.
>     >
>     > The attached patch fixes -fms-extensions with GNU libc headers.
>     Could you
>     > give it a spin against the MS headers?
>     >
>     > Will land and get this merged to the release branch if it works
>     for you.
>     >
>     > Alp.
>     >
>     >
>     >>
>     >> HTH!
>     >>
>     >> ~Aaron
>     >>
>     >> _______________________________________________
>     >> cfe-dev mailing list
>     >> cfe-dev at cs.uiuc.edu <mailto:cfe-dev at cs.uiuc.edu>
>     >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>     >
>     >
>     > --
>     > http://www.nuanti.com
>     > the browser experts
>     >
>     _______________________________________________
>     cfe-dev mailing list
>     cfe-dev at cs.uiuc.edu <mailto:cfe-dev at cs.uiuc.edu>
>     http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>
>

-- 
http://www.nuanti.com
the browser experts




More information about the cfe-dev mailing list