summaryrefslogtreecommitdiffstats
path: root/llvm/lib/IR/InlineAsm.cpp
diff options
context:
space:
mode:
authorAlexander Potapenko <glider@google.com>2016-05-23 13:58:04 +0000
committerAlexander Potapenko <glider@google.com>2016-05-23 13:58:04 +0000
commit7d68c2604a2ed40c92c2c55380de9290631d042c (patch)
tree453f75f3fe096ed2b69f37792926403c921ad449 /llvm/lib/IR/InlineAsm.cpp
parentc345705bee0e0ced683c9486e27e9a9573fc23ba (diff)
downloadbcm5719-llvm-7d68c2604a2ed40c92c2c55380de9290631d042c.tar.gz
bcm5719-llvm-7d68c2604a2ed40c92c2c55380de9290631d042c.zip
[InlineAsm] Avoid creating extra string instances in ConstraintInfo::Parse()
Don't create unnecessary std::string objects when pushing back to |pCodes|. NFC. llvm-svn: 270436
Diffstat (limited to 'llvm/lib/IR/InlineAsm.cpp')
-rw-r--r--llvm/lib/IR/InlineAsm.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/llvm/lib/IR/InlineAsm.cpp b/llvm/lib/IR/InlineAsm.cpp
index 15d3b830b8f..d6cf8c543db 100644
--- a/llvm/lib/IR/InlineAsm.cpp
+++ b/llvm/lib/IR/InlineAsm.cpp
@@ -142,14 +142,14 @@ bool InlineAsm::ConstraintInfo::Parse(StringRef Str,
// Find the end of the register name.
StringRef::iterator ConstraintEnd = std::find(I+1, E, '}');
if (ConstraintEnd == E) return true; // "{foo"
- pCodes->push_back(std::string(I, ConstraintEnd+1));
+ pCodes->push_back(StringRef(I, ConstraintEnd+1 - I));
I = ConstraintEnd+1;
} else if (isdigit(static_cast<unsigned char>(*I))) { // Matching Constraint
// Maximal munch numbers.
StringRef::iterator NumStart = I;
while (I != E && isdigit(static_cast<unsigned char>(*I)))
++I;
- pCodes->push_back(std::string(NumStart, I));
+ pCodes->push_back(StringRef(NumStart, I - NumStart));
unsigned N = atoi(pCodes->back().c_str());
// Check that this is a valid matching constraint!
if (N >= ConstraintsSoFar.size() || ConstraintsSoFar[N].Type != isOutput||
@@ -183,11 +183,11 @@ bool InlineAsm::ConstraintInfo::Parse(StringRef Str,
} else if (*I == '^') {
// Multi-letter constraint
// FIXME: For now assuming these are 2-character constraints.
- pCodes->push_back(std::string(I+1, I+3));
+ pCodes->push_back(StringRef(I+1, 2));
I += 3;
} else {
// Single letter constraint.
- pCodes->push_back(std::string(I, I+1));
+ pCodes->push_back(StringRef(I, 1));
++I;
}
}
OpenPOWER on IntegriCloud