summaryrefslogtreecommitdiffstats
path: root/llvm/lib/IR/Globals.cpp
diff options
context:
space:
mode:
authorTeresa Johnson <tejohnson@google.com>2016-03-15 02:13:19 +0000
committerTeresa Johnson <tejohnson@google.com>2016-03-15 02:13:19 +0000
commitb43027d1e0ebc57f6efb8961f3eb4df1b0828ba1 (patch)
treef1b708d3e09b4614bde408def28fa7d0306e3745 /llvm/lib/IR/Globals.cpp
parentee88b615007d848e3a37bf3b341fc05ea1282b49 (diff)
downloadbcm5719-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
Diffstat (limited to 'llvm/lib/IR/Globals.cpp')
-rw-r--r--llvm/lib/IR/Globals.cpp24
1 files changed, 24 insertions, 0 deletions
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.
OpenPOWER on IntegriCloud