@@ -9164,33 +9164,36 @@ ConstString TypeSystemClang::DeclGetName(void *opaque_decl) {
91649164}
91659165
91669166ConstString TypeSystemClang::DeclGetMangledName (void *opaque_decl) {
9167- if (opaque_decl) {
9168- clang::NamedDecl *nd =
9169- llvm::dyn_cast<clang::NamedDecl>((clang::Decl *)opaque_decl);
9170- if (nd != nullptr && !llvm::isa<clang::ObjCMethodDecl>(nd)) {
9171- clang::MangleContext *mc = getMangleContext ();
9172- if (mc && mc->shouldMangleCXXName (nd)) {
9173- llvm::SmallVector<char , 1024 > buf;
9174- llvm::raw_svector_ostream llvm_ostrm (buf);
9175- if (llvm::isa<clang::CXXConstructorDecl>(nd)) {
9176- mc->mangleName (
9177- clang::GlobalDecl (llvm::dyn_cast<clang::CXXConstructorDecl>(nd),
9178- Ctor_Complete),
9179- llvm_ostrm);
9180- } else if (llvm::isa<clang::CXXDestructorDecl>(nd)) {
9181- mc->mangleName (
9182- clang::GlobalDecl (llvm::dyn_cast<clang::CXXDestructorDecl>(nd),
9183- Dtor_Complete),
9184- llvm_ostrm);
9185- } else {
9186- mc->mangleName (nd, llvm_ostrm);
9187- }
9188- if (buf.size () > 0 )
9189- return ConstString (buf.data (), buf.size ());
9190- }
9191- }
9167+ clang::NamedDecl *nd = llvm::dyn_cast_or_null<clang::NamedDecl>(
9168+ static_cast <clang::Decl *>(opaque_decl));
9169+
9170+ if (!nd || llvm::isa<clang::ObjCMethodDecl>(nd))
9171+ return {};
9172+
9173+ clang::MangleContext *mc = getMangleContext ();
9174+ if (!mc || !mc->shouldMangleCXXName (nd))
9175+ return {};
9176+
9177+ llvm::SmallVector<char , 1024 > buf;
9178+ llvm::raw_svector_ostream llvm_ostrm (buf);
9179+ if (llvm::isa<clang::CXXConstructorDecl>(nd)) {
9180+ mc->mangleName (
9181+ clang::GlobalDecl (llvm::dyn_cast<clang::CXXConstructorDecl>(nd),
9182+ Ctor_Complete),
9183+ llvm_ostrm);
9184+ } else if (llvm::isa<clang::CXXDestructorDecl>(nd)) {
9185+ mc->mangleName (
9186+ clang::GlobalDecl (llvm::dyn_cast<clang::CXXDestructorDecl>(nd),
9187+ Dtor_Complete),
9188+ llvm_ostrm);
9189+ } else {
9190+ mc->mangleName (nd, llvm_ostrm);
91929191 }
9193- return ConstString ();
9192+
9193+ if (buf.size () > 0 )
9194+ return ConstString (buf.data (), buf.size ());
9195+
9196+ return {};
91949197}
91959198
91969199CompilerDeclContext TypeSystemClang::DeclGetDeclContext (void *opaque_decl) {
0 commit comments