Files
clang-p2996/clang/test/SemaCXX/statements.cpp
Aaron Ballman b1e511bf5a Ignore trailing NullStmts in StmtExprs for GCC compatibility.
Ignore trailing NullStmts in compound expressions when determining the result type and value. This is to match the GCC behavior which ignores semicolons at the end of compound expressions.

Patch by Dominic Ferreira.

llvm-svn: 365498
2019-07-09 15:02:07 +00:00

55 lines
1.1 KiB
C++

// RUN: %clang_cc1 %s -fsyntax-only -pedantic -verify
void foo() {
return foo();
}
// PR6451 - C++ Jump checking
struct X {
X();
};
void test2() {
goto later; // expected-error {{cannot jump}}
X x; // expected-note {{jump bypasses variable initialization}}
later:
;
}
namespace PR6536 {
struct A {};
void a() { goto out; A x; out: return; }
}
void test3() {
__asm__ ("":"+r" (test3)); // expected-error{{invalid lvalue in asm output}}
}
void test4(); // expected-note{{possible target for call}}
void test4(int) { // expected-note{{possible target for call}}
// expected-error@+1{{overloaded function could not be resolved}}
__asm__ ("":"+r" (test4)); // expected-error{{invalid lvalue in asm output}}
}
void test5() {
char buf[1];
__asm__ ("":"+r" (buf));
}
struct MMX_t {};
void test6() { __asm__("" : "=m"(*(MMX_t *)0)); }
template <typename T>
T test7(T v) {
return ({ // expected-warning{{use of GNU statement expression extension}}
T a = v;
a;
;
;
});
}
void test8() {
int a = test7(1);
double b = test7(2.0);
}