diff options
author | Alexander Potapenko <glider@google.com> | 2016-05-23 13:58:04 +0000 |
---|---|---|
committer | Alexander Potapenko <glider@google.com> | 2016-05-23 13:58:04 +0000 |
commit | 7d68c2604a2ed40c92c2c55380de9290631d042c (patch) | |
tree | 453f75f3fe096ed2b69f37792926403c921ad449 /llvm/lib/IR/InlineAsm.cpp | |
parent | c345705bee0e0ced683c9486e27e9a9573fc23ba (diff) | |
download | bcm5719-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.cpp | 8 |
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; } } |