diff options
-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 +} |