forked from OSchip/llvm-project
[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
This commit is contained in:
parent
6679fc1a79
commit
cdffc36c11
|
@ -733,8 +733,10 @@ void DeclPrinter::VisitImportDecl(ImportDecl *D) {
|
|||
void DeclPrinter::VisitStaticAssertDecl(StaticAssertDecl *D) {
|
||||
Out << "static_assert(";
|
||||
D->getAssertExpr()->printPretty(Out, nullptr, Policy, Indentation);
|
||||
Out << ", ";
|
||||
D->getMessage()->printPretty(Out, nullptr, Policy, Indentation);
|
||||
if (StringLiteral *SL = D->getMessage()) {
|
||||
Out << ", ";
|
||||
SL->printPretty(Out, nullptr, Policy, Indentation);
|
||||
}
|
||||
Out << ")";
|
||||
}
|
||||
|
||||
|
|
|
@ -546,13 +546,8 @@ _bittestandset(long *a, long b) {
|
|||
#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__
|
||||
|
|
|
@ -51,3 +51,12 @@ StaticAssertProtected<X> sap2; // expected-note {{instantiation}}
|
|||
|
||||
static_assert(true); // expected-warning {{C++1z extension}}
|
||||
static_assert(false); // expected-error-re {{failed{{$}}}} expected-warning {{extension}}
|
||||
|
||||
void PR23756() {
|
||||
struct { // expected-note 2 {{no known conversion from}}
|
||||
} _ = decltype( // expected-error {{no viable conversion}}
|
||||
({ // expected-warning {{no effect in an unevaluated context}}
|
||||
static_assert(true); // expected-warning {{C++1z extension}}
|
||||
1;
|
||||
})){};
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue