diff options
author | Eric Christopher <echristo@apple.com> | 2011-06-03 20:44:52 +0000 |
---|---|---|
committer | Eric Christopher <echristo@apple.com> | 2011-06-03 20:44:52 +0000 |
commit | ce1ecf59c80db0ff922e599e4334258f9fa65783 (patch) | |
tree | 05539d0934f9d4744fd6c706612278014cd4b32d | |
parent | c3526c778efc0910c81cbc9ba1e9362d3c4094c3 (diff) |
Fix an off by one error.
Part of rdar://9037836 and rdar://9119939
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132590 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/VMCore/InlineAsm.cpp | 3 | ||||
-rw-r--r-- | test/CodeGen/ARM/inlineasm3.ll | 9 |
2 files changed, 10 insertions, 2 deletions
diff --git a/lib/VMCore/InlineAsm.cpp b/lib/VMCore/InlineAsm.cpp index 70d0e3881e..c4e065df05 100644 --- a/lib/VMCore/InlineAsm.cpp +++ b/lib/VMCore/InlineAsm.cpp @@ -185,11 +185,10 @@ bool InlineAsm::ConstraintInfo::Parse(StringRef Str, // Multi-letter constraint // These will only occur with the existing multiple alternative // constraints and so we can use the isalpha loop below. - StringRef::iterator ConStart = I; + StringRef::iterator ConStart = ++I; while (I != E && isalpha(*I)) ++I; pCodes->push_back(std::string(ConStart, I)); - ++I; } else { // Single letter constraint. pCodes->push_back(std::string(I, I+1)); diff --git a/test/CodeGen/ARM/inlineasm3.ll b/test/CodeGen/ARM/inlineasm3.ll index ff54d6d75a..cf38d8c718 100644 --- a/test/CodeGen/ARM/inlineasm3.ll +++ b/test/CodeGen/ARM/inlineasm3.ll @@ -41,3 +41,12 @@ entry: tail call void asm sideeffect "flds s15, $0 \0A", "^Uv|m,~{s15}"(float 1.000000e+00) nounwind ret i32 0 } + +; Radar 9037836 & 9119939 + +@k.2126 = internal unnamed_addr global float 1.000000e+00 +define i32 @t4() nounwind { +entry: +call void asm sideeffect "flds s15, $0 \0A", "*^Uv,~{s15}"(float* @k.2126) nounwind +ret i32 0 +} |