summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2015-06-03 00:02:40 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2015-06-03 00:02:40 +0000
commit9aa3ab30a9ccd1aaf6ffb62d03785c887a6e4c81 (patch)
tree10d2710ef470a338215361f65c457fd1bc0c18be /llvm/lib
parent2f41757634d9a58ef6808410ad8e685331233019 (diff)
downloadbcm5719-llvm-9aa3ab30a9ccd1aaf6ffb62d03785c887a6e4c81.tar.gz
bcm5719-llvm-9aa3ab30a9ccd1aaf6ffb62d03785c887a6e4c81.zip
Avoid a call to getOrCreateSymbol when we already have the symbol.
llvm-svn: 238890
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/X86MCInstLower.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86MCInstLower.cpp b/llvm/lib/Target/X86/X86MCInstLower.cpp
index cc0e0770258..ff1436af4ec 100644
--- a/llvm/lib/Target/X86/X86MCInstLower.cpp
+++ b/llvm/lib/Target/X86/X86MCInstLower.cpp
@@ -128,6 +128,7 @@ GetSymbolFromOperand(const MachineOperand &MO) const {
const DataLayout *DL = TM.getDataLayout();
assert((MO.isGlobal() || MO.isSymbol() || MO.isMBB()) && "Isn't a symbol reference");
+ MCSymbol *Sym = nullptr;
SmallString<128> Name;
StringRef Suffix;
@@ -160,12 +161,14 @@ GetSymbolFromOperand(const MachineOperand &MO) const {
else
getMang()->getNameWithPrefix(Name, MO.getSymbolName());
} else if (MO.isMBB()) {
- Name += MO.getMBB()->getSymbol()->getName();
+ assert(Suffix.empty());
+ Sym = MO.getMBB()->getSymbol();
}
unsigned OrigLen = Name.size() - PrefixLen;
Name += Suffix;
- MCSymbol *Sym = Ctx.getOrCreateSymbol(Name);
+ if (!Sym)
+ Sym = Ctx.getOrCreateSymbol(Name);
StringRef OrigName = StringRef(Name).substr(PrefixLen, OrigLen);
OpenPOWER on IntegriCloud