[cfe-commits] r46973 - in /cfe/trunk: Lex/Preprocessor.cpp Parse/ParseDecl.cpp include/clang/Basic/TokenKinds.def include/clang/Parse/Parser.h
Steve Naroff
snaroff at apple.com
Mon Feb 11 14:30:04 PST 2008
Author: snaroff
Date: Mon Feb 11 16:29:58 2008
New Revision: 46973
URL: http://llvm.org/viewvc/llvm-project?rev=46973&view=rev
Log:
Move Microsoft __declspec hack from the parser to the preprocessor. Since we have no plans to actually implement this construct, it is cleaner to limit the change to the preprocessor.
Modified:
cfe/trunk/Lex/Preprocessor.cpp
cfe/trunk/Parse/ParseDecl.cpp
cfe/trunk/include/clang/Basic/TokenKinds.def
cfe/trunk/include/clang/Parse/Parser.h
Modified: cfe/trunk/Lex/Preprocessor.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Lex/Preprocessor.cpp?rev=46973&r1=46972&r2=46973&view=diff
==============================================================================
--- cfe/trunk/Lex/Preprocessor.cpp (original)
+++ cfe/trunk/Lex/Preprocessor.cpp Mon Feb 11 16:29:58 2008
@@ -435,6 +435,7 @@
DefineBuiltinMacro(Buf, "__int16=short");
DefineBuiltinMacro(Buf, "__int32=int");
DefineBuiltinMacro(Buf, "__int64=long long");
+ DefineBuiltinMacro(Buf, "__declspec(X)=");
}
// FIXME: Should emit a #line directive here.
}
Modified: cfe/trunk/Parse/ParseDecl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Parse/ParseDecl.cpp?rev=46973&r1=46972&r2=46973&view=diff
==============================================================================
--- cfe/trunk/Parse/ParseDecl.cpp (original)
+++ cfe/trunk/Parse/ParseDecl.cpp Mon Feb 11 16:29:58 2008
@@ -36,48 +36,6 @@
return Actions.ActOnTypeName(CurScope, DeclaratorInfo).Val;
}
-/// FuzzyParseMicrosoftDeclspec. The following construct is Microsoft's
-/// equivalent of GCC's __attribute__. The grammar below is taken from
-/// Microsoft's website. Unfortunately, it is incomplete. FIXME: If/when we
-/// parse this for real, we will need to get a real/current grammar.
-///
-/// decl-specifier:
-/// '__declspec' '(' extended-decl-modifier-seq ')'
-///
-/// extended-decl-modifier-seq:
-/// extended-decl-modifier opt
-/// extended-decl-modifier extended-decl-modifier-seq
-///
-/// extended-decl-modifier:
-/// align( # )
-/// allocate(" segname ")
-/// appdomain
-/// deprecated
-/// dllimport
-/// dllexport
-/// jitintrinsic
-/// naked
-/// noalias
-/// noinline
-/// noreturn
-/// nothrow
-/// novtable
-/// process
-/// property({get=get_func_name|,put=put_func_name})
-/// restrict
-/// selectany
-/// thread
-/// uuid(" ComObjectGUID ")
-///
-void Parser::FuzzyParseMicrosoftDeclspec() {
- assert(Tok.is(tok::kw___declspec) && "Not an declspec!");
- ConsumeToken();
- do {
- ConsumeAnyToken();
- } while (ParenCount > 0 && Tok.isNot(tok::eof));
- return;
-}
-
/// ParseAttributes - Parse a non-empty attributes list.
///
/// [GNU] attributes:
@@ -483,13 +441,6 @@
case tok::kw_typedef:
isInvalid = DS.SetStorageClassSpec(DeclSpec::SCS_typedef, Loc, PrevSpec);
break;
- case tok::kw___declspec:
- FuzzyParseMicrosoftDeclspec();
- // Don't consume the next token, __declspec's can appear one after
- // another. For example:
- // __declspec(deprecated("comment1"))
- // __declspec(deprecated("comment2")) extern unsigned int _winmajor;
- continue;
case tok::kw_extern:
if (DS.isThreadSpecified())
Diag(Tok, diag::ext_thread_before, "extern");
@@ -674,9 +625,6 @@
Tok.is(tok::kw_union) ? DeclSpec::TST_union : DeclSpec::TST_struct;
SourceLocation StartLoc = ConsumeToken();
- if (getLang().Microsoft && Tok.is(tok::kw___declspec))
- FuzzyParseMicrosoftDeclspec();
-
// Parse the tag portion of this.
DeclTy *TagDecl;
if (ParseTag(TagDecl, TagType, StartLoc))
Modified: cfe/trunk/include/clang/Basic/TokenKinds.def
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/TokenKinds.def?rev=46973&r1=46972&r2=46973&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/TokenKinds.def (original)
+++ cfe/trunk/include/clang/Basic/TokenKinds.def Mon Feb 11 16:29:58 2008
@@ -299,9 +299,6 @@
// Apple Extension.
KEYWORD(__private_extern__ , EXTC90|EXTC99|NOTCPP)
-// Microsoft Extension.
-KEYWORD(__declspec , EXTC90|EXTC99|NOTCPP)
-
// Alternate spelling for various tokens. There are GCC extensions in all
// languages, but should not be disabled in strict conformance mode.
ALIAS("__attribute__", __attribute)
Modified: cfe/trunk/include/clang/Parse/Parser.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Parse/Parser.h?rev=46973&r1=46972&r2=46973&view=diff
==============================================================================
--- cfe/trunk/include/clang/Parse/Parser.h (original)
+++ cfe/trunk/include/clang/Parse/Parser.h Mon Feb 11 16:29:58 2008
@@ -441,7 +441,6 @@
bool isTypeSpecifierQualifier() const;
TypeTy *ParseTypeName();
- void FuzzyParseMicrosoftDeclspec();
AttributeList *ParseAttributes();
void ParseTypeofSpecifier(DeclSpec &DS);
More information about the cfe-commits
mailing list