[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;
+}