|
48 | 48 | #include "clang/Basic/Version.h" |
49 | 49 | #include "clang/CodeGen/BackendUtil.h" |
50 | 50 | #include "clang/CodeGen/ConstantInitBuilder.h" |
| 51 | +#include "clang/Driver/Driver.h" |
51 | 52 | #include "clang/Frontend/FrontendDiagnostic.h" |
52 | 53 | #include "llvm/ADT/STLExtras.h" |
53 | 54 | #include "llvm/ADT/StringExtras.h" |
54 | 55 | #include "llvm/ADT/StringSwitch.h" |
55 | 56 | #include "llvm/Analysis/TargetLibraryInfo.h" |
56 | 57 | #include "llvm/BinaryFormat/ELF.h" |
| 58 | +#include "llvm/Demangle/Demangle.h" |
57 | 59 | #include "llvm/Frontend/OpenMP/OMPIRBuilder.h" |
58 | 60 | #include "llvm/IR/AttributeMask.h" |
59 | 61 | #include "llvm/IR/CallingConv.h" |
|
75 | 77 | #include "llvm/TargetParser/Triple.h" |
76 | 78 | #include "llvm/TargetParser/X86TargetParser.h" |
77 | 79 | #include "llvm/Transforms/Utils/BuildLibCalls.h" |
| 80 | +#include <cassert> |
78 | 81 | #include <optional> |
79 | 82 |
|
80 | 83 | using namespace clang; |
@@ -2044,6 +2047,11 @@ StringRef CodeGenModule::getMangledName(GlobalDecl GD) { |
2044 | 2047 | GD.getWithKernelReferenceKind(KernelReferenceKind::Kernel), |
2045 | 2048 | ND)); |
2046 | 2049 |
|
| 2050 | + if (getCodeGenOpts().NoDemanglingFailures) |
| 2051 | + assert((!llvm::isMangledName(MangledName) || |
| 2052 | + llvm::demangle(MangledName) != MangledName) && |
| 2053 | + "clang must demangle a mangled name it generates!"); |
| 2054 | + |
2047 | 2055 | auto Result = Manglings.insert(std::make_pair(MangledName, GD)); |
2048 | 2056 | return MangledDeclNames[CanonicalGD] = Result.first->first(); |
2049 | 2057 | } |
|
0 commit comments