diff --git a/lib/Serialization/DeserializeSIL.cpp b/lib/Serialization/DeserializeSIL.cpp
index 91e3d85..2e0dd2e 100644
--- a/lib/Serialization/DeserializeSIL.cpp
+++ b/lib/Serialization/DeserializeSIL.cpp
@@ -13,8 +13,10 @@
 #define DEBUG_TYPE "deserialize"
 #include "DeserializeSIL.h"
 #include "swift/Basic/Defer.h"
+#include "swift/Basic/PrettyStackTrace.h"
 #include "swift/AST/GenericSignature.h"
 #include "swift/AST/ProtocolConformance.h"
+#include "swift/AST/PrettyStackTrace.h"
 #include "swift/Serialization/ModuleFile.h"
 #include "SILFormat.h"
 #include "swift/SIL/SILArgument.h"
@@ -382,6 +384,8 @@
     return nullptr;
   assert(FID <= Funcs.size() && "invalid SILFunction ID");
 
+  PrettyStackTraceStringAction trace("deserializing SIL function", name);
+
   auto &cacheEntry = Funcs[FID-1];
   if (cacheEntry.isFullyDeserialized() ||
       (cacheEntry.isDeserialized() && declarationOnly))
@@ -2419,6 +2423,8 @@
   if (!GlobalVarList)
     return nullptr;
 
+  PrettyStackTraceStringAction trace("deserializing SIL global", Name);
+
   // If we already deserialized this global variable, just return it.
   if (auto *GV = SILMod.lookUpGlobalVariable(Name))
     return GV;
@@ -2543,6 +2549,9 @@
   }
 
   ClassDecl *theClass = cast<ClassDecl>(MF->getDecl(ClassID));
+
+  PrettyStackTraceDecl trace("deserializing SIL vtable for", theClass);
+
   // Fetch the next record.
   scratch.clear();
   entry = SILCursor.advance(AF_DontPopBlockAtEnd);
@@ -2662,6 +2671,11 @@
   auto theConformance = cast<NormalProtocolConformance>(
                           MF->readConformance(SILCursor).getConcrete());
 
+  PrettyStackTraceType trace(SILMod.getASTContext(),
+                             "deserializing SIL witness table for",
+                             theConformance->getType());
+  PrettyStackTraceDecl trace2("... to", theConformance->getProtocol());
+
   if (!existingWt)
     existingWt = SILMod.lookUpWitnessTable(theConformance, false);
   auto wT = existingWt;
@@ -2856,6 +2870,8 @@
     return nullptr;
   }
 
+  PrettyStackTraceDecl trace("deserializing default witness table for", proto);
+
   if (!existingWt)
     existingWt = SILMod.lookUpDefaultWitnessTable(proto, /*deserializeLazily=*/ false);
   auto wT = existingWt;
