From ce1ecf59c80db0ff922e599e4334258f9fa65783 Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Fri, 3 Jun 2011 20:44:52 +0000 Subject: [PATCH] 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 --- lib/VMCore/InlineAsm.cpp | 3 +-- 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 70d0e3881e8..c4e065df057 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 ff54d6d75ac..cf38d8c7183 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 +}