diff options
Diffstat (limited to 'llvm/lib/Transforms/Utils/ModuleUtils.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/ModuleUtils.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/llvm/lib/Transforms/Utils/ModuleUtils.cpp b/llvm/lib/Transforms/Utils/ModuleUtils.cpp index 10efdd6..596849e 100644 --- a/llvm/lib/Transforms/Utils/ModuleUtils.cpp +++ b/llvm/lib/Transforms/Utils/ModuleUtils.cpp @@ -18,6 +18,7 @@ #include "llvm/IR/IRBuilder.h" #include "llvm/IR/MDBuilder.h" #include "llvm/IR/Module.h" +#include "llvm/Support/Casting.h" #include "llvm/Support/MD5.h" #include "llvm/Support/raw_ostream.h" #include "llvm/Support/xxhash.h" @@ -346,10 +347,11 @@ void llvm::filterDeadComdatFunctions( std::string llvm::getUniqueModuleId(Module *M) { MD5 Md5; - auto *UniqueSourceFileNames = mdconst::extract_or_null<ConstantInt>( - M->getModuleFlag("Unique Source File Names")); - if (UniqueSourceFileNames && UniqueSourceFileNames->getZExtValue()) { - Md5.update(M->getSourceFileName()); + auto *UniqueSourceFileIdentifier = dyn_cast_or_null<MDNode>( + M->getModuleFlag("Unique Source File Identifier")); + if (UniqueSourceFileIdentifier) { + Md5.update( + cast<MDString>(UniqueSourceFileIdentifier->getOperand(0))->getString()); } else { bool ExportsSymbols = false; for (auto &GV : M->global_values()) { |