diff options
| -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());  | 

