diff options
author | Teresa Johnson <tejohnson@google.com> | 2016-03-15 02:13:19 +0000 |
---|---|---|
committer | Teresa Johnson <tejohnson@google.com> | 2016-03-15 02:13:19 +0000 |
commit | b43027d1e0ebc57f6efb8961f3eb4df1b0828ba1 (patch) | |
tree | f1b708d3e09b4614bde408def28fa7d0306e3745 | |
parent | ee88b615007d848e3a37bf3b341fc05ea1282b49 (diff) | |
download | bcm5719-llvm-b43027d1e0ebc57f6efb8961f3eb4df1b0828ba1.tar.gz bcm5719-llvm-b43027d1e0ebc57f6efb8961f3eb4df1b0828ba1.zip |
Move global ID computation from Function to GlobalValue (NFC)
Since the static getGlobalIdentifier and getGUID methods are now called
for global values other than functions, reflect that by moving these
methods to the GlobalValue class.
llvm-svn: 263524
-rw-r--r-- | llvm/include/llvm/IR/Function.h | 15 | ||||
-rw-r--r-- | llvm/include/llvm/IR/GlobalValue.h | 24 | ||||
-rw-r--r-- | llvm/include/llvm/IR/ModuleSummaryIndex.h | 6 | ||||
-rw-r--r-- | llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 13 | ||||
-rw-r--r-- | llvm/lib/IR/Function.cpp | 24 | ||||
-rw-r--r-- | llvm/lib/IR/Globals.cpp | 24 | ||||
-rw-r--r-- | llvm/lib/ProfileData/InstrProf.cpp | 2 | ||||
-rw-r--r-- | llvm/lib/Transforms/IPO/FunctionImport.cpp | 2 |
8 files changed, 55 insertions, 55 deletions
diff --git a/llvm/include/llvm/IR/Function.h b/llvm/include/llvm/IR/Function.h index 2b8c8dbfe5b..70eb29f7a6a 100644 --- a/llvm/include/llvm/IR/Function.h +++ b/llvm/include/llvm/IR/Function.h @@ -27,7 +27,6 @@ #include "llvm/IR/GlobalObject.h" #include "llvm/IR/OperandTraits.h" #include "llvm/Support/Compiler.h" -#include "llvm/Support/MD5.h" namespace llvm { @@ -646,20 +645,6 @@ public: /// to \a DISubprogram. DISubprogram *getSubprogram() const; - /// Return the modified name for a function suitable to be - /// used as the key for a global lookup (e.g. profile or ThinLTO). - /// The function's original name is \c FuncName and has linkage of type - /// \c Linkage. The function is defined in module \c FileName. - static std::string getGlobalIdentifier(StringRef FuncName, - GlobalValue::LinkageTypes Linkage, - StringRef FileName); - - /// Return a 64-bit global unique ID constructed from global function name - /// (i.e. returned by getGlobalIdentifier). - static uint64_t getGUID(StringRef GlobalFuncName) { - return MD5Hash(GlobalFuncName); - } - private: void allocHungoffUselist(); template<int Idx> void setHungoffOperand(Constant *C); diff --git a/llvm/include/llvm/IR/GlobalValue.h b/llvm/include/llvm/IR/GlobalValue.h index 03abf9a85fb..9d578d4769d 100644 --- a/llvm/include/llvm/IR/GlobalValue.h +++ b/llvm/include/llvm/IR/GlobalValue.h @@ -20,6 +20,7 @@ #include "llvm/IR/Constant.h" #include "llvm/IR/DerivedTypes.h" +#include "llvm/Support/MD5.h" #include <system_error> namespace llvm { @@ -307,11 +308,24 @@ public: return Name; } -/// @name Materialization -/// Materialization is used to construct functions only as they're needed. This -/// is useful to reduce memory usage in LLVM or parsing work done by the -/// BitcodeReader to load the Module. -/// @{ + /// Return the modified name for a global value suitable to be + /// used as the key for a global lookup (e.g. profile or ThinLTO). + /// The value's original name is \c Name and has linkage of type + /// \c Linkage. The value is defined in module \c FileName. + static std::string getGlobalIdentifier(StringRef Name, + GlobalValue::LinkageTypes Linkage, + StringRef FileName); + + /// Return a 64-bit global unique ID constructed from global value name + /// (i.e. returned by getGlobalIdentifier). + static uint64_t getGUID(StringRef GlobalName) { return MD5Hash(GlobalName); } + + /// @name Materialization + /// Materialization is used to construct functions only as they're needed. + /// This + /// is useful to reduce memory usage in LLVM or parsing work done by the + /// BitcodeReader to load the Module. + /// @{ /// If this function's Module is being lazily streamed in functions from disk /// or some other source, this method can be used to check to see if the diff --git a/llvm/include/llvm/IR/ModuleSummaryIndex.h b/llvm/include/llvm/IR/ModuleSummaryIndex.h index 2ecdd7d6025..d84eb240152 100644 --- a/llvm/include/llvm/IR/ModuleSummaryIndex.h +++ b/llvm/include/llvm/IR/ModuleSummaryIndex.h @@ -277,13 +277,13 @@ public: /// Get the list of global value info objects for a given value name. const GlobalValueInfoList &getGlobalValueInfoList(StringRef ValueName) { - return GlobalValueMap[Function::getGUID(ValueName)]; + return GlobalValueMap[GlobalValue::getGUID(ValueName)]; } /// Get the list of global value info objects for a given value name. const const_globalvalueinfo_iterator findGlobalValueInfoList(StringRef ValueName) const { - return GlobalValueMap.find(Function::getGUID(ValueName)); + return GlobalValueMap.find(GlobalValue::getGUID(ValueName)); } /// Get the list of global value info objects for a given value GUID. @@ -295,7 +295,7 @@ public: /// Add a global value info for a value of the given name. void addGlobalValueInfo(StringRef ValueName, std::unique_ptr<GlobalValueInfo> Info) { - GlobalValueMap[Function::getGUID(ValueName)].push_back(std::move(Info)); + GlobalValueMap[GlobalValue::getGUID(ValueName)].push_back(std::move(Info)); } /// Add a global value info for a value of the given GUID. diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index 69fb4ece9f3..8d749c29108 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -5506,10 +5506,10 @@ std::error_code ModuleSummaryIndexBitcodeReader::parseValueSymbolTable( auto VLI = ValueIdToLinkageMap.find(ValueID); assert(VLI != ValueIdToLinkageMap.end() && "No linkage found for VST entry?"); - std::string GlobalId = - Function::getGlobalIdentifier(ValueName, VLI->second, SourceFileName); + std::string GlobalId = GlobalValue::getGlobalIdentifier( + ValueName, VLI->second, SourceFileName); TheIndex->addGlobalValueInfo(GlobalId, std::move(GlobalValInfo)); - ValueIdToCallGraphGUIDMap[ValueID] = Function::getGUID(GlobalId); + ValueIdToCallGraphGUIDMap[ValueID] = GlobalValue::getGUID(GlobalId); ValueName.clear(); break; } @@ -5526,10 +5526,11 @@ std::error_code ModuleSummaryIndexBitcodeReader::parseValueSymbolTable( auto VLI = ValueIdToLinkageMap.find(ValueID); assert(VLI != ValueIdToLinkageMap.end() && "No linkage found for VST entry?"); - std::string FunctionGlobalId = - Function::getGlobalIdentifier(ValueName, VLI->second, SourceFileName); + std::string FunctionGlobalId = GlobalValue::getGlobalIdentifier( + ValueName, VLI->second, SourceFileName); TheIndex->addGlobalValueInfo(FunctionGlobalId, std::move(FuncInfo)); - ValueIdToCallGraphGUIDMap[ValueID] = Function::getGUID(FunctionGlobalId); + ValueIdToCallGraphGUIDMap[ValueID] = + GlobalValue::getGUID(FunctionGlobalId); ValueName.clear(); break; diff --git a/llvm/lib/IR/Function.cpp b/llvm/lib/IR/Function.cpp index 427efbba4f8..3ecf386e9b1 100644 --- a/llvm/lib/IR/Function.cpp +++ b/llvm/lib/IR/Function.cpp @@ -1005,27 +1005,3 @@ Optional<uint64_t> Function::getEntryCount() const { } return None; } - -std::string Function::getGlobalIdentifier(StringRef FuncName, - GlobalValue::LinkageTypes Linkage, - StringRef FileName) { - - // Function names may be prefixed with a binary '1' to indicate - // that the backend should not modify the symbols due to any platform - // naming convention. Do not include that '1' in the PGO profile name. - if (FuncName[0] == '\1') - FuncName = FuncName.substr(1); - - std::string NewFuncName = FuncName; - if (llvm::GlobalValue::isLocalLinkage(Linkage)) { - // For local symbols, prepend the main file name to distinguish them. - // Do not include the full path in the file name since there's no guarantee - // that it will stay the same, e.g., if the files are checked out from - // version control in different locations. - if (FileName.empty()) - NewFuncName = NewFuncName.insert(0, "<unknown>:"); - else - NewFuncName = NewFuncName.insert(0, FileName.str() + ":"); - } - return NewFuncName; -} diff --git a/llvm/lib/IR/Globals.cpp b/llvm/lib/IR/Globals.cpp index 7f4b6234b0b..b0d00a42fb5 100644 --- a/llvm/lib/IR/Globals.cpp +++ b/llvm/lib/IR/Globals.cpp @@ -99,6 +99,30 @@ void GlobalObject::copyAttributesFrom(const GlobalValue *Src) { } } +std::string GlobalValue::getGlobalIdentifier(StringRef Name, + GlobalValue::LinkageTypes Linkage, + StringRef FileName) { + + // Value names may be prefixed with a binary '1' to indicate + // that the backend should not modify the symbols due to any platform + // naming convention. Do not include that '1' in the PGO profile name. + if (Name[0] == '\1') + Name = Name.substr(1); + + std::string NewName = Name; + if (llvm::GlobalValue::isLocalLinkage(Linkage)) { + // For local symbols, prepend the main file name to distinguish them. + // Do not include the full path in the file name since there's no guarantee + // that it will stay the same, e.g., if the files are checked out from + // version control in different locations. + if (FileName.empty()) + NewName = NewName.insert(0, "<unknown>:"); + else + NewName = NewName.insert(0, FileName.str() + ":"); + } + return NewName; +} + const char *GlobalValue::getSection() const { if (auto *GA = dyn_cast<GlobalAlias>(this)) { // In general we cannot compute this at the IR level, but we try. diff --git a/llvm/lib/ProfileData/InstrProf.cpp b/llvm/lib/ProfileData/InstrProf.cpp index e7e6753f9b3..66ac03770e7 100644 --- a/llvm/lib/ProfileData/InstrProf.cpp +++ b/llvm/lib/ProfileData/InstrProf.cpp @@ -80,7 +80,7 @@ std::string getPGOFuncName(StringRef RawFuncName, GlobalValue::LinkageTypes Linkage, StringRef FileName, uint64_t Version LLVM_ATTRIBUTE_UNUSED) { - return Function::getGlobalIdentifier(RawFuncName, Linkage, FileName); + return GlobalValue::getGlobalIdentifier(RawFuncName, Linkage, FileName); } std::string getPGOFuncName(const Function &F, uint64_t Version) { diff --git a/llvm/lib/Transforms/IPO/FunctionImport.cpp b/llvm/lib/Transforms/IPO/FunctionImport.cpp index 90b36aab363..5de0577f14e 100644 --- a/llvm/lib/Transforms/IPO/FunctionImport.cpp +++ b/llvm/lib/Transforms/IPO/FunctionImport.cpp @@ -142,7 +142,7 @@ static void findExternalCalls( ImportedName = Renamed; } // Compute the global identifier used in the summary index. - auto CalledFunctionGlobalID = Function::getGlobalIdentifier( + auto CalledFunctionGlobalID = GlobalValue::getGlobalIdentifier( CalledFunction->getName(), CalledFunction->getLinkage(), CalledFunction->getParent()->getSourceFileName()); |