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