Add GUID/getGlobalIdentifier() non-static API to global value
authorMehdi Amini <mehdi.amini@apple.com>
Fri, 25 Mar 2016 05:57:41 +0000 (05:57 +0000)
committerMehdi Amini <mehdi.amini@apple.com>
Fri, 25 Mar 2016 05:57:41 +0000 (05:57 +0000)
Summary:
These are just helpers calling their static counter part to
simplify client code.

Reviewers: tejohnson

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D18339

From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 264382

llvm/include/llvm/IR/GlobalValue.h
llvm/lib/IR/Globals.cpp

index 9d578d4..c6a88e4 100644 (file)
@@ -316,10 +316,18 @@ public:
                                          GlobalValue::LinkageTypes Linkage,
                                          StringRef FileName);
 
+  /// Return the modified name for this global value suitable to be
+  /// used as the key for a global lookup (e.g. profile or ThinLTO).
+  std::string getGlobalIdentifier();
+
   /// Return a 64-bit global unique ID constructed from global value name
-  /// (i.e. returned by getGlobalIdentifier).
+  /// (i.e. returned by getGlobalIdentifier()).
   static uint64_t getGUID(StringRef GlobalName) { return MD5Hash(GlobalName); }
 
+  /// Return a 64-bit global unique ID constructed from global value name
+  /// (i.e. returned by getGlobalIdentifier()).
+  uint64_t getGUID() { return getGUID(getGlobalIdentifier()); }
+
   /// @name Materialization
   /// Materialization is used to construct functions only as they're needed.
   /// This
index b0d00a4..c96cc67 100644 (file)
@@ -123,6 +123,11 @@ std::string GlobalValue::getGlobalIdentifier(StringRef Name,
   return NewName;
 }
 
+std::string GlobalValue::getGlobalIdentifier() {
+  return getGlobalIdentifier(getName(), getLinkage(),
+                             getParent()->getSourceFileName());
+}
+
 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.