diff --git a/include/clang/AST/Type.h b/include/clang/AST/Type.h
index d821258736237686496635c76ec7a4b581755389..d903b9d8cbcfbb7f4a97767d5433cb6789a3d0ca 100644
--- a/include/clang/AST/Type.h
+++ b/include/clang/AST/Type.h
@@ -3544,6 +3544,7 @@ public:
     case NullabilityKind::Unspecified:
       return attr_null_unspecified;
     }
+    llvm_unreachable("Unknown nullability kind.");
   }
 
   /// Strip off the top-level nullability annotation on the given
diff --git a/lib/AST/Type.cpp b/lib/AST/Type.cpp
index 15f3d39634d3ab850dff0e1ae97f3137c66c9a31..3ac117194099ab4d211b80f10ac0821d63dcf280 100644
--- a/lib/AST/Type.cpp
+++ b/lib/AST/Type.cpp
@@ -2466,6 +2466,7 @@ bool Type::canHaveNullability() const {
   case Type::Atomic:
     return false;
   }
+  llvm_unreachable("bad type kind!");
 }
 
 llvm::Optional<NullabilityKind> AttributedType::getImmediateNullability() const {
diff --git a/lib/Basic/IdentifierTable.cpp b/lib/Basic/IdentifierTable.cpp
index 0349ef463bf5df56bb4c2c24d18fa2f09ffb9e90..b2950081000346fef17c34a6986277ed6ea3d175 100644
--- a/lib/Basic/IdentifierTable.cpp
+++ b/lib/Basic/IdentifierTable.cpp
@@ -658,4 +658,5 @@ StringRef clang::getNullabilitySpelling(NullabilityKind kind) {
   case NullabilityKind::Unspecified:
     return "__null_unspecified";
   }
+  llvm_unreachable("Unknown nullability kind.");
 }
diff --git a/lib/Sema/SemaType.cpp b/lib/Sema/SemaType.cpp
index 44c925778cbfd06d017131fa0e313b397d8630b3..ff0e26c8402c369109a37376d0659669346809e0 100644
--- a/lib/Sema/SemaType.cpp
+++ b/lib/Sema/SemaType.cpp
@@ -2581,6 +2581,7 @@ IdentifierInfo *Sema::getNullabilityKeyword(NullabilityKind nullability) {
       Ident___null_unspecified = PP.getIdentifierInfo("__null_unspecified");
     return Ident___null_unspecified;
   }
+  llvm_unreachable("Unknown nullability kind.");
 }
 
 /// Retrieve the identifier "NSError".