diff --git a/clang/lib/Serialization/ASTWriterDecl.cpp b/clang/lib/Serialization/ASTWriterDecl.cpp index efc1ea30efd8..a0f7da20e67e 100644 --- a/clang/lib/Serialization/ASTWriterDecl.cpp +++ b/clang/lib/Serialization/ASTWriterDecl.cpp @@ -1059,16 +1059,12 @@ void ASTDeclWriter::VisitClassTemplateSpecializationDecl( llvm::PointerUnion InstFrom = D->getSpecializedTemplateOrPartial(); - Decl *InstFromD; - if (InstFrom.is()) { - InstFromD = InstFrom.get(); + if (Decl *InstFromD = InstFrom.dyn_cast()) { Writer.AddDeclRef(InstFromD, Record); } else { - InstFromD = InstFrom.get(); - Writer.AddDeclRef(InstFromD, Record); + Writer.AddDeclRef(InstFrom.get(), + Record); Writer.AddTemplateArgumentList(&D->getTemplateInstantiationArgs(), Record); - InstFromD = cast(InstFromD)-> - getSpecializedTemplate(); } // Explicit info.