1*3cab2bb3Spatrick // See http://llvm.org/bugs/show_bug.cgi?id=11468 2*3cab2bb3Spatrick #include <stdio.h> 3*3cab2bb3Spatrick #include <string> 4*3cab2bb3Spatrick 5*3cab2bb3Spatrick class Action { 6*3cab2bb3Spatrick public: Action()7*3cab2bb3Spatrick Action() {} PrintString(const std::string & msg) const8*3cab2bb3Spatrick void PrintString(const std::string& msg) const { 9*3cab2bb3Spatrick fprintf(stderr, "%s\n", msg.c_str()); 10*3cab2bb3Spatrick } Throw(const char & arg) const11*3cab2bb3Spatrick void Throw(const char& arg) const { 12*3cab2bb3Spatrick PrintString("PrintString called!"); // this line is important 13*3cab2bb3Spatrick throw arg; 14*3cab2bb3Spatrick } 15*3cab2bb3Spatrick }; 16*3cab2bb3Spatrick main()17*3cab2bb3Spatrickint main() { 18*3cab2bb3Spatrick const Action a; 19*3cab2bb3Spatrick fprintf(stderr, "&a before = %p\n", &a); 20*3cab2bb3Spatrick try { 21*3cab2bb3Spatrick a.Throw('c'); 22*3cab2bb3Spatrick } catch(const char&) { 23*3cab2bb3Spatrick fprintf(stderr, "&a in catch = %p\n", &a); 24*3cab2bb3Spatrick } 25*3cab2bb3Spatrick fprintf(stderr, "&a final = %p\n", &a); 26*3cab2bb3Spatrick return 0; 27*3cab2bb3Spatrick } 28