diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp
index 63e4ccc..2662860 100644
--- a/lib/AST/ASTContext.cpp
+++ b/lib/AST/ASTContext.cpp
@@ -400,10 +400,11 @@
     // pointer size.
     return getTypeInfo(cast<ReferenceType>(T)->getPointeeType());
   case Type::MemberPointer: {
-    // Note that this is not only platform- but also ABI-dependent. We follow
+    // FIXME: This is not only platform- but also ABI-dependent. We follow
     // the GCC ABI, where pointers to data are one pointer large, pointers to
     // functions two pointers. But if we want to support ABI compatibility with
-    // other compilers too, we need to delegate this completely to TargetInfo.
+    // other compilers too, we need to delegate this completely to TargetInfo
+    // or some ABI abstraction layer.
     QualType Pointee = cast<MemberPointerType>(T)->getPointeeType();
     unsigned AS = Pointee.getAddressSpace();
     Width = Target.getPointerWidth(AS);
diff --git a/lib/AST/Type.cpp b/lib/AST/Type.cpp
index ebaa011..7d9be2d 100644
--- a/lib/AST/Type.cpp
+++ b/lib/AST/Type.cpp
@@ -324,6 +324,8 @@
   // correctly.
   if (const PointerLikeType *PT = getAsPointerLikeType())
     return PT->getPointeeType()->isVariablyModifiedType();
+  if (const MemberPointerType *PT = getAsMemberPointerType())
+    return PT->getPointeeType()->isVariablyModifiedType();
 
   // A function can return a variably modified type
   // This one isn't completely obvious, but it follows from the
diff --git a/lib/Parse/ParseTentative.cpp b/lib/Parse/ParseTentative.cpp
index a7c3e38..e7914cc 100644
--- a/lib/Parse/ParseTentative.cpp
+++ b/lib/Parse/ParseTentative.cpp
@@ -357,7 +357,7 @@
 ///           '*' cv-qualifier-seq[opt]
 ///           '&'
 /// [C++0x]   '&&'                                                        [TODO]
-///           '::'[opt] nested-name-specifier '*' cv-qualifier-seq[opt]   [TODO]
+///           '::'[opt] nested-name-specifier '*' cv-qualifier-seq[opt]
 ///
 ///         cv-qualifier-seq:
 ///           cv-qualifier cv-qualifier-seq[opt]
@@ -387,8 +387,12 @@
   //   ptr-operator declarator
 
   while (1) {
-    if (Tok.is(tok::star) || Tok.is(tok::amp) || 
-        (Tok.is(tok::caret) && getLang().Blocks)) {
+    if (Tok.is(tok::coloncolon) || Tok.is(tok::identifier))
+      TryAnnotateCXXScopeToken();
+
+    if (Tok.is(tok::star) || Tok.is(tok::amp) ||
+        (Tok.is(tok::caret) && getLang().Blocks) ||
+        (Tok.is(tok::annot_cxxscope) && NextToken().is(tok::star))) {
       // ptr-operator
       ConsumeToken();
       while (Tok.is(tok::kw_const)    ||
