This is also a good starting point if anyone wants to work on MS exception support.

However while making this change it occurred to me that this should be moved from MicrosoftExt to MicrosoftMode -- thoughts?

Alp.


While making this change
On 04/01/2014 15:25, Alp Toker wrote:
Author: alp
Date: Sat Jan  4 09:25:02 2014
New Revision: 198497

URL: http://llvm.org/viewvc/llvm-project?rev=198497&view=rev
Log:
Move MS predefined type_info out of InitializePredefinedMacros

Instead of keeping it in amongst the macros, build the declaration at Sema init
the same way we do with other predeclared and builtin types.

In practice this means the declaration is marked implicit and therefore won't
show up as an unwanted user-declared type in tooling which has been a
frequently reported issue (though I haven't been able to cook up a test).

Modified:
     cfe/trunk/lib/Frontend/InitPreprocessor.cpp
     cfe/trunk/lib/Sema/Sema.cpp

Modified: cfe/trunk/lib/Frontend/InitPreprocessor.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/InitPreprocessor.cpp?rev=198497&r1=198496&r2=198497&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/InitPreprocessor.cpp (original)
+++ cfe/trunk/lib/Frontend/InitPreprocessor.cpp Sat Jan  4 09:25:02 2014
@@ -518,7 +518,6 @@ static void InitializePredefinedMacros(c
      if (LangOpts.CPlusPlus) {
        // FIXME: Support Microsoft's __identifier extension in the lexer.
        Builder.append("#define __identifier(x) x");
-      Builder.append("class type_info;");
      }
    }
Modified: cfe/trunk/lib/Sema/Sema.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/Sema.cpp?rev=198497&r1=198496&r2=198497&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/Sema.cpp (original)
+++ cfe/trunk/lib/Sema/Sema.cpp Sat Jan  4 09:25:02 2014
@@ -178,6 +178,13 @@ void Sema::Initialize() {
        PushOnScopeChains(Context.getObjCProtocolDecl(), TUScope);
    }
+ // Initialize Microsoft "predefined C++ types".
+  if (PP.getLangOpts().MicrosoftExt && PP.getLangOpts().CPlusPlus) {
+    if (IdResolver.begin(&Context.Idents.get("type_info")) == IdResolver.end())
+      PushOnScopeChains(Context.buildImplicitRecord("type_info", TTK_Class),
+                        TUScope);
+  }
+
    // Initialize predefined OpenCL types.
    if (PP.getLangOpts().OpenCL) {
      addImplicitTypedef("image1d_t", Context.OCLImage1dTy);


_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

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

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to