diff --git a/include/clang/AST/Type.h b/include/clang/AST/Type.h
index fdf79db..9db22fc 100644
--- a/include/clang/AST/Type.h
+++ b/include/clang/AST/Type.h
@@ -321,6 +321,9 @@
   
   /// Helper methods to distinguish type categories. All type predicates
   /// operate on the canonical type, ignoring typedefs and qualifiers.
+
+  /// isSpecificBuiltinType - Test for a particular builtin type.
+  bool isSpecificBuiltinType(unsigned K) const;
   
   /// isIntegerType() does *not* include complex integers (a GCC extension).
   /// isComplexIntegerType() can be used to test for complex integers.
@@ -1876,11 +1879,15 @@
   return isa<TemplateTypeParmType>(CanonicalType.getUnqualifiedType());
 }
 
-inline bool Type::isOverloadType() const {
+inline bool Type::isSpecificBuiltinType(unsigned K) const {
   if (const BuiltinType *BT = getAsBuiltinType())
-    return BT->getKind() == BuiltinType::Overload;
-  else
-    return false;
+    if (BT->getKind() == (BuiltinType::Kind) K)
+      return true;
+  return false;
+}
+
+inline bool Type::isOverloadType() const {
+  return isSpecificBuiltinType(BuiltinType::Overload);
 }
 
 /// Insertion operator for diagnostics.  This allows sending QualType's into a
diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp
index 6b49b85..9198bf7 100644
--- a/lib/AST/ASTContext.cpp
+++ b/lib/AST/ASTContext.cpp
@@ -468,9 +468,8 @@
   unsigned ABIAlign = getTypeAlign(T);
   
   // Doubles should be naturally aligned if possible.
-  if (const BuiltinType *BT = dyn_cast<BuiltinType>(getCanonicalType(T)))
-    if (BT->getKind() == BuiltinType::Double)
-      return std::max(ABIAlign, 64U);
+  if (T->isSpecificBuiltinType(BuiltinType::Double))
+    return std::max(ABIAlign, 64U);
   
   return ABIAlign;
 }
