diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp
index fe53585..43964f7 100644
--- a/lib/Sema/SemaDecl.cpp
+++ b/lib/Sema/SemaDecl.cpp
@@ -3176,6 +3176,7 @@
   // Keep track of whether all elements have type int.
   bool AllElementsInt = true;
   
+  QualType EnumType = Context.getTypeDeclType(Enum);
   EnumConstantDecl *EltList = 0;
   for (unsigned i = 0; i != NumElements; ++i) {
     EnumConstantDecl *ECD =
@@ -3269,6 +3270,12 @@
       llvm::APSInt IV = ECD->getInitVal();
       IV.setIsSigned(true);
       ECD->setInitVal(IV);
+
+      if (getLangOptions().CPlusPlus)
+        // C++ [dcl.enum]p4: Following the closing brace of an
+        // enum-specifier, each enumerator has the type of its
+        // enumeration. 
+        ECD->setType(EnumType);
       continue;  // Already int type.
     }
 
@@ -3291,6 +3298,11 @@
       NewSign = true;
     } else if (ECD->getType() == BestType) {
       // Already the right type!
+      if (getLangOptions().CPlusPlus)
+        // C++ [dcl.enum]p4: Following the closing brace of an
+        // enum-specifier, each enumerator has the type of its
+        // enumeration. 
+        ECD->setType(EnumType);
       continue;
     } else {
       NewTy = BestType;
@@ -3306,7 +3318,13 @@
     // Adjust the Expr initializer and type.
     ECD->setInitExpr(new ImplicitCastExpr(NewTy, ECD->getInitExpr(), 
                                           /*isLvalue=*/false));
-    ECD->setType(NewTy);
+    if (getLangOptions().CPlusPlus)
+      // C++ [dcl.enum]p4: Following the closing brace of an
+      // enum-specifier, each enumerator has the type of its
+      // enumeration. 
+      ECD->setType(EnumType);
+    else
+      ECD->setType(NewTy);
   }
   
   Enum->completeDefinition(Context, BestType);
diff --git a/lib/Sema/SemaOverload.cpp b/lib/Sema/SemaOverload.cpp
index def85ca..4bfe0c4 100644
--- a/lib/Sema/SemaOverload.cpp
+++ b/lib/Sema/SemaOverload.cpp
@@ -634,11 +634,12 @@
 
     // The types we'll try to promote to, in the appropriate
     // order. Try each of these types.
-    QualType PromoteTypes[4] = { 
+    QualType PromoteTypes[6] = { 
       Context.IntTy, Context.UnsignedIntTy, 
-      Context.LongTy, Context.UnsignedLongTy 
+      Context.LongTy, Context.UnsignedLongTy ,
+      Context.LongLongTy, Context.UnsignedLongLongTy
     };
-    for (int Idx = 0; Idx < 4; ++Idx) {
+    for (int Idx = 0; Idx < 6; ++Idx) {
       uint64_t ToSize = Context.getTypeSize(PromoteTypes[Idx]);
       if (FromSize < ToSize ||
           (FromSize == ToSize && 
@@ -2034,6 +2035,7 @@
   CandidateSet.push_back(OverloadCandidate());
   OverloadCandidate& Candidate = CandidateSet.back();
   Candidate.Function = 0;
+  Candidate.IsSurrogate = false;
   Candidate.BuiltinTypes.ResultTy = ResultTy;
   for (unsigned ArgIdx = 0; ArgIdx < NumArgs; ++ArgIdx)
     Candidate.BuiltinTypes.ParamTypes[ArgIdx] = ParamTys[ArgIdx];
diff --git a/test/SemaCXX/overload-call.cpp b/test/SemaCXX/overload-call.cpp
index 5460521..eed8223 100644
--- a/test/SemaCXX/overload-call.cpp
+++ b/test/SemaCXX/overload-call.cpp
@@ -1,4 +1,4 @@
-// RUN: clang -fsyntax-only -pedantic -verify %s 
+// RUN: clang -fsyntax-only -pedantic -verify %s
 int* f(int) { return 0; }
 float* f(float) { return 0; }
 void f();
@@ -88,11 +88,11 @@
 }
 
 enum PromotesToInt {
-  PromotesToIntValue = 1
+  PromotesToIntValue = -1
 };
 
 enum PromotesToUnsignedInt {
-  PromotesToUnsignedIntValue = (unsigned int)-1
+  PromotesToUnsignedIntValue = 1u
 };
 
 int* o(int);
