follows '~' in a clobber constraint string.
Previously llc would hit an llvm_unreachable when compiling an inline-asm
instruction with malformed constraint string "~x{21}". This commit enables
LLParser to catch the error earlier and print a more helpful diagnostic.
rdar://problem/
14206559
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217288
91177308-0d34-0410-b5e6-
96231b3b80d8
if (*I == '~') {
Type = isClobber;
++I;
+
+ // '{' must immediately follow '~'.
+ if (I != E && *I != '{')
+ return true;
} else if (*I == '=') {
++I;
Type = isOutput;
--- /dev/null
+; RUN: not llvm-as <%s 2>&1 | FileCheck %s
+
+; "~x{21}" is not a valid clobber constraint.
+
+; CHECK: invalid type for inline asm constraint string
+
+define void @foo() nounwind {
+ call void asm sideeffect "mov x0, #42", "~{x0},~{x19},~x{21}"() nounwind
+ ret void
+}