diff options
Diffstat (limited to 'llvm/lib/IR/InlineAsm.cpp')
-rw-r--r-- | llvm/lib/IR/InlineAsm.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/llvm/lib/IR/InlineAsm.cpp b/llvm/lib/IR/InlineAsm.cpp index fd732f9eda8b..ee30b92522d0 100644 --- a/llvm/lib/IR/InlineAsm.cpp +++ b/llvm/lib/IR/InlineAsm.cpp @@ -136,14 +136,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(StringRef(I, ConstraintEnd+1 - I)); + pCodes->push_back(std::string(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(StringRef(NumStart, I - NumStart)); + pCodes->push_back(std::string(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|| @@ -179,7 +179,7 @@ bool InlineAsm::ConstraintInfo::Parse(StringRef Str, } else if (*I == '^') { // Multi-letter constraint // FIXME: For now assuming these are 2-character constraints. - pCodes->push_back(StringRef(I+1, 2)); + pCodes->push_back(std::string(StringRef(I + 1, 2))); I += 3; } else if (*I == '@') { // Multi-letter constraint @@ -189,11 +189,11 @@ bool InlineAsm::ConstraintInfo::Parse(StringRef Str, int N = C - '0'; assert(N > 0 && "Found a zero letter constraint!"); ++I; - pCodes->push_back(StringRef(I, N)); + pCodes->push_back(std::string(StringRef(I, N))); I += N; } else { // Single letter constraint. - pCodes->push_back(StringRef(I, 1)); + pCodes->push_back(std::string(StringRef(I, 1))); ++I; } } |