]> granicus.if.org Git - clang/commitdiff
Fixes for compilation with Microsoft Visual Studio 2010, from Steven Watanabe!
authorDouglas Gregor <dgregor@apple.com>
Tue, 11 May 2010 06:18:17 +0000 (06:18 +0000)
committerDouglas Gregor <dgregor@apple.com>
Tue, 11 May 2010 06:18:17 +0000 (06:18 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103458 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/DeclContextInternals.h
include/clang/Analysis/ProgramPoint.h
include/clang/Parse/Ownership.h
lib/AST/DeclBase.cpp
lib/Checker/GRExprEngine.cpp

index 2a4b12ac2eafe86d19bf700c8d1c38144fc16bff..9602b677fca53557a0419818004536979884a80d 100644 (file)
@@ -156,7 +156,8 @@ public:
   /// represents.
   DeclContext::lookup_result getLookupResult(ASTContext &Context) {
     if (isNull())
-      return DeclContext::lookup_result(0, 0);
+      return DeclContext::lookup_result(DeclContext::lookup_iterator(0),
+                                        DeclContext::lookup_iterator(0));
 
     if (hasDeclarationIDs())
       materializeDecls(Context);
index fb8d4d5ff53a296e2cb06860a91f2128a60dd376..075838d45e5c4939e4bdb26a95c2c54ec8031188 100644 (file)
@@ -59,7 +59,7 @@ private:
 protected:
   ProgramPoint(const void* P, Kind k, const LocationContext *l,
                const void *tag = 0)
-    : Data(P, NULL), K(k), L(l), Tag(tag) {}
+    : Data(P, static_cast<const void*>(NULL)), K(k), L(l), Tag(tag) {}
 
   ProgramPoint(const void* P1, const void* P2, Kind k, const LocationContext *l,
                const void *tag = 0)
index dfbb301f3b212003e625096536a2ae76a1c56144..e9a20b7872b5f66d57a78a1ce3936a1bc25d74b5 100644 (file)
@@ -403,8 +403,10 @@ namespace clang {
 
     friend class moving::ASTResultMover<Destroyer>;
 
+#if !(defined(_MSC_VER) && _MSC_VER >= 1600)
     ASTOwningResult(ASTOwningResult&); // DO NOT IMPLEMENT
     ASTOwningResult& operator =(ASTOwningResult&); // DO NOT IMPLEMENT
+#endif
 
     void destroy() {
       if (Ptr) {
@@ -444,6 +446,19 @@ namespace clang {
       return *this;
     }
 
+#if defined(_MSC_VER) && _MSC_VER >= 1600
+    // Emulated move semantics don't work with msvc.
+    ASTOwningResult(ASTOwningResult &&mover)
+      : ActionInv(mover.ActionInv),
+        Ptr(mover.Ptr) {
+      mover.Ptr = 0;
+    }
+    ASTOwningResult &operator=(ASTOwningResult &&mover) {
+      *this = moving::ASTResultMover<Destroyer>(mover);
+      return *this;
+    }
+#endif
+
     /// Assignment from a raw pointer. Takes ownership - beware!
     ASTOwningResult &operator=(void *raw) {
       destroy();
index b5aec0c5125c355b51c7fd66fc6cd16da348d4e4..42a372632099c9d7aff630215e1bfc81f62ff7ce 100644 (file)
@@ -811,12 +811,12 @@ DeclContext::lookup(DeclarationName Name) {
     buildLookup(this);
 
     if (!LookupPtr)
-      return lookup_result(0, 0);
+      return lookup_result(lookup_iterator(0), lookup_iterator(0));
   }
 
   StoredDeclsMap::iterator Pos = LookupPtr->find(Name);
   if (Pos == LookupPtr->end())
-    return lookup_result(0, 0);
+    return lookup_result(lookup_iterator(0), lookup_iterator(0));
   return Pos->second.getLookupResult(getParentASTContext());
 }
 
index b7b48d70de75ca8ead1f0cdba862e8534336caf0..13b2c2045877894dc524834dccbb4dbcb2eef2c4 100644 (file)
@@ -1970,7 +1970,7 @@ void GRExprEngine::VisitCall(CallExpr* CE, ExplodedNode* Pred,
 //===----------------------------------------------------------------------===//
 
 static std::pair<const void*,const void*> EagerlyAssumeTag
-  = std::pair<const void*,const void*>(&EagerlyAssumeTag,0);
+  = std::pair<const void*,const void*>(&EagerlyAssumeTag,static_cast<void*>(0));
 
 void GRExprEngine::EvalEagerlyAssume(ExplodedNodeSet &Dst, ExplodedNodeSet &Src,
                                      Expr *Ex) {