crash.cpp revision 3ea9e33ea25e0c2b12db56418ba3f994eb662c04
13ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// XFAIL: hexagon
2cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola// RUN: %clang_cc1 %s -std=c++11 -emit-llvm-only
30e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// RUN: %clang_cc1 -emit-obj -o %t -gline-tables-only -std=c++11 %s
4cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola// CHECK that we don't crash.
5cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola
6cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola// PR11676's example is ill-formed:
7cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola/*
8cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindolaunion _XEvent {
9cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola};
10cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindolavoid ProcessEvent() {
11cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola  _XEvent pluginEvent = _XEvent();
12cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola}
13cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola*/
14cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola
15cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola// Example from PR11665:
16cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindolavoid f() {
17cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola  union U { int field; } u = U();
18cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola  (void)U().field;
19cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola}
20cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola
21cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindolanamespace PR17476 {
22cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindolastruct string {
23cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola  string(const char *__s);
24cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola  string &operator+=(const string &__str);
25cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola};
26cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola
27cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindolatemplate <class ELFT> void finalizeDefaultAtomValues() {
28cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola  auto startEnd = [&](const char * sym)->void {
29cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola    string start("__");
30cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola    start += sym;
31cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola  }
32cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola  ;
33cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola  startEnd("preinit_array");
34cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola}
35cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola
36cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindolavoid f() { finalizeDefaultAtomValues<int>(); }
37cf467a937ce4cde0e4c8ea512709b0192f9fc19fRafael Espindola}
38