[AST] There is no message for C++1z-style static_assert

We would crash in the DeclPrinter trying to pretty-print the
static_assert message.  C++1z-style assertions don't have a message so
we would crash.

This fixes PR23756.

llvm-svn: 239170
diff --git a/clang/lib/Headers/Intrin.h b/clang/lib/Headers/Intrin.h
index 727a55e..9592ccc 100644
--- a/clang/lib/Headers/Intrin.h
+++ b/clang/lib/Headers/Intrin.h
@@ -546,13 +546,8 @@
 #if defined(__i386__) || defined(__x86_64__)
 static __inline__ unsigned char __attribute__((__always_inline__, __nodebug__))
 _interlockedbittestandset(long volatile *__BitBase, long __BitPos) {
-  unsigned char __Res;
-  __asm__ ("xor %0, %0\n"
-           "lock bts %2, %1\n"
-           "setc %0\n"
-           : "=r" (__Res), "+m"(*__BitBase)
-           : "Ir"(__BitPos));
-  return __Res;
+  long __OldVal = __atomic_fetch_or(__BitBase, 1 << __BitPos, 5);
+  return (__OldVal >> __BitPos) & 1;
 }
 #endif
 #ifdef __x86_64__