[cfe-commits] r46864 - in /cfe/trunk: Lex/Preprocessor.cpp Parse/ParseDecl.cpp Parse/ParseStmt.cpp include/clang/Basic/TokenKinds.def

Steve Naroff snaroff at apple.com
Thu Feb 7 15:41:17 PST 2008


Anders et.al.,

The test directory is barfing all over the place.

I reverted my last patch locally to see if I was at fault.  
Unfortunately, it wasn't me.

Anders, do you think r46855 is to blame? Are the tests failing for you?

snaroff

On Feb 7, 2008, at 3:24 PM, Steve Naroff wrote:

> Author: snaroff
> Date: Thu Feb  7 17:24:32 2008
> New Revision: 46864
>
> URL: http://llvm.org/viewvc/llvm-project?rev=46864&view=rev
> Log:
>
> - Add support for fuzzy parsing line-oriented __asm's (yuck).
> - Change handling of __w64 to a built-in macro.
>
>
> Modified:
>    cfe/trunk/Lex/Preprocessor.cpp
>    cfe/trunk/Parse/ParseDecl.cpp
>    cfe/trunk/Parse/ParseStmt.cpp
>    cfe/trunk/include/clang/Basic/TokenKinds.def
>
> Modified: cfe/trunk/Lex/Preprocessor.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Lex/Preprocessor.cpp?rev=46864&r1=46863&r2=46864&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- cfe/trunk/Lex/Preprocessor.cpp (original)
> +++ cfe/trunk/Lex/Preprocessor.cpp Thu Feb  7 17:24:32 2008
> @@ -429,6 +429,7 @@
>     DefineBuiltinMacro(Buf, "__cdecl=");
>     DefineBuiltinMacro(Buf, "_cdecl=");
>     DefineBuiltinMacro(Buf, "__ptr64=");
> +    DefineBuiltinMacro(Buf, "__w64=");
>     DefineBuiltinMacro(Buf, "__forceinline=");
>     DefineBuiltinMacro(Buf, "__int8=char");
>     DefineBuiltinMacro(Buf, "__int16=short");
>
> Modified: cfe/trunk/Parse/ParseDecl.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Parse/ParseDecl.cpp?rev=46864&r1=46863&r2=46864&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- cfe/trunk/Parse/ParseDecl.cpp (original)
> +++ cfe/trunk/Parse/ParseDecl.cpp Thu Feb  7 17:24:32 2008
> @@ -483,8 +483,6 @@
>     case tok::kw_typedef:
>       isInvalid = DS.SetStorageClassSpec(DeclSpec::SCS_typedef, Loc,  
> PrevSpec);
>       break;
> -    case tok::kw___w64: // ignore Microsoft specifier
> -      break;
>     case tok::kw___declspec:
>       FuzzyParseMicrosoftDeclspec();
>       // Don't consume the next token, __declspec's can appear one  
> after
>
> Modified: cfe/trunk/Parse/ParseStmt.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Parse/ParseStmt.cpp?rev=46864&r1=46863&r2=46864&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- cfe/trunk/Parse/ParseStmt.cpp (original)
> +++ cfe/trunk/Parse/ParseStmt.cpp Thu Feb  7 17:24:32 2008
> @@ -14,6 +14,7 @@
>
> #include "clang/Parse/Parser.h"
> #include "clang/Basic/Diagnostic.h"
> +#include "clang/Basic/SourceManager.h"
> #include "clang/Parse/DeclSpec.h"
> #include "clang/Parse/Scope.h"
> using namespace clang;
> @@ -911,10 +912,21 @@
> }
>
> Parser::StmtResult Parser::FuzzyParseMicrosoftAsmStatement() {
> -  unsigned short savedBraceCount = BraceCount;
> -  do {
> -    ConsumeAnyToken();
> -  } while (BraceCount > savedBraceCount && Tok.isNot(tok::eof));
> +  if (Tok.is(tok::l_brace)) {
> +    unsigned short savedBraceCount = BraceCount;
> +    do {
> +      ConsumeAnyToken();
> +    } while (BraceCount > savedBraceCount && Tok.isNot(tok::eof));
> +  } else {
> +    // From the MS website: If used without braces, the __asm  
> keyword means
> +    // that the rest of the line is an assembly-language statement.
> +    SourceManager &SrcMgr = PP.getSourceManager();
> +    unsigned lineNo = SrcMgr.getLineNumber(Tok.getLocation());
> +    do {
> +      ConsumeAnyToken();
> +    } while ((SrcMgr.getLineNumber(Tok.getLocation()) == lineNo) &&
> +             Tok.isNot(tok::r_brace) && Tok.isNot(tok::eof));
> +  }
>   return false;
> }
>
> @@ -937,7 +949,7 @@
>   assert(Tok.is(tok::kw_asm) && "Not an asm stmt");
>   SourceLocation AsmLoc = ConsumeToken();
>
> -  if (Tok.is(tok::l_brace)) {
> +  if (getLang().Microsoft && Tok.isNot(tok::l_paren)) {
>     msAsm = true;
>     return FuzzyParseMicrosoftAsmStatement();
>   }
>
> Modified: cfe/trunk/include/clang/Basic/TokenKinds.def
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/TokenKinds.def?rev=46864&r1=46863&r2=46864&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- cfe/trunk/include/clang/Basic/TokenKinds.def (original)
> +++ cfe/trunk/include/clang/Basic/TokenKinds.def Thu Feb  7 17:24:32  
> 2008
> @@ -299,8 +299,7 @@
> // Apple Extension.
> KEYWORD(__private_extern__          , EXTC90|EXTC99|NOTCPP)
>
> -// Microsoft Extensions.
> -KEYWORD(__w64          , EXTC90|EXTC99|NOTCPP)
> +// Microsoft Extension.
> KEYWORD(__declspec     , EXTC90|EXTC99|NOTCPP)
>
> // Alternate spelling for various tokens.  There are GCC extensions  
> in all
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits




More information about the cfe-commits mailing list