Index: llvm/test/Demangle/dlang.test =================================================================== --- /dev/null +++ llvm/test/Demangle/dlang.test @@ -0,0 +1,10 @@ +RUN: llvm-cxxfilt -n < %s | FileCheck --match-full-lines %s + +; Full test suite for dlang demangling at +; llvm/unittests/Demangle/DLangDemangleTest.cpp + +CHECK: D main + _Dmain + +CHECK: demangle.test() + _D8demangle4testFZv Index: llvm/tools/llvm-cxxfilt/llvm-cxxfilt.cpp =================================================================== --- llvm/tools/llvm-cxxfilt/llvm-cxxfilt.cpp +++ llvm/tools/llvm-cxxfilt/llvm-cxxfilt.cpp @@ -92,6 +92,11 @@ Undecorated = rustDemangle(DecoratedStr, nullptr, nullptr, &Status); } + if (!Undecorated && + (DecoratedLength >= 2 && strncmp(DecoratedStr, "_D", 2) == 0)) { + Undecorated = dlangDemangle(DecoratedStr); + } + std::string Result(Undecorated ? Prefix + Undecorated : Mangled); free(Undecorated); return Result;