38 lines
809 B
C++
38 lines
809 B
C++
|
// RUN: %clang_cc1 %s -std=c++11 -emit-llvm-only
|
||
|
// RUN: %clang_cc1 -emit-obj -o %t -debug-info-kind=line-tables-only -std=c++11 %s
|
||
|
// RUN: %clang_cc1 -emit-obj -o %t -debug-info-kind=line-directives-only -std=c++11 %s
|
||
|
// 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>(); }
|
||
|
}
|