2013-10-04 22:33:42 +08:00
|
|
|
// RUN: %clang_cc1 %s -std=c++11 -emit-llvm-only
|
2015-10-08 12:24:12 +08:00
|
|
|
// RUN: %clang_cc1 -emit-obj -o %t -debug-info-kind=line-tables-only -std=c++11 %s
|
2018-08-31 21:56:14 +08:00
|
|
|
// RUN: %clang_cc1 -emit-obj -o %t -debug-info-kind=line-directives-only -std=c++11 %s
|
2013-10-04 22:33:42 +08:00
|
|
|
// CHECK that we don't crash.
|
|
|
|
|
|
|
|
// PR11676's example is ill-formed:
|
|
|
|
/*
|
|
|
|
union _XEvent {
|
|
|
|
};
|
|
|
|
void ProcessEvent() {
|
|
|
|
_XEvent pluginEvent = _XEvent();
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
|
|
|
|
// Example from PR11665:
|
|
|
|
void f() {
|
|
|
|
union U { int field; } u = U();
|
|
|
|
(void)U().field;
|
|
|
|
}
|
|
|
|
|
|
|
|
namespace PR17476 {
|
|
|
|
struct string {
|
|
|
|
string(const char *__s);
|
|
|
|
string &operator+=(const string &__str);
|
|
|
|
};
|
|
|
|
|
|
|
|
template <class ELFT> void finalizeDefaultAtomValues() {
|
|
|
|
auto startEnd = [&](const char * sym)->void {
|
|
|
|
string start("__");
|
|
|
|
start += sym;
|
|
|
|
}
|
|
|
|
;
|
|
|
|
startEnd("preinit_array");
|
|
|
|
}
|
|
|
|
|
|
|
|
void f() { finalizeDefaultAtomValues<int>(); }
|
|
|
|
}
|