[X86] Prevent clang clobber checking for asm flag constraints.
Update getConstraintRegister as X86 Asm flag output constraints are no
longer fully alphanumeric,
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@354211 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Basic/Targets/X86.h b/lib/Basic/Targets/X86.h
index 2b12626..b69a050 100644
--- a/lib/Basic/Targets/X86.h
+++ b/lib/Basic/Targets/X86.h
@@ -198,7 +198,7 @@
StringRef Expression) const override {
StringRef::iterator I, E;
for (I = Constraint.begin(), E = Constraint.end(); I != E; ++I) {
- if (isalpha(*I))
+ if (isalpha(*I) || *I == '@')
break;
}
if (I == E)
diff --git a/test/CodeGen/inline-asm-x86-flag-output.c b/test/CodeGen/inline-asm-x86-flag-output.c
index f647e3e..74ad3a4 100644
--- a/test/CodeGen/inline-asm-x86-flag-output.c
+++ b/test/CodeGen/inline-asm-x86-flag-output.c
@@ -363,3 +363,14 @@
return 0;
return 1;
}
+
+_Bool check_no_clobber_conflicts() {
+ //CHECK-LABEL: @check_no_clobber_conflicts
+ //CHECK: = tail call i8 asm "", "={@cce},~{cx},~{dirflag},~{fpsr},~{flags}"()
+ _Bool b;
+ asm(""
+ : "=@cce"(b)
+ :
+ : "cx");
+ return b;
+}