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

source code of compiler-rt/lib/asan/tests/asan_exceptions_test.cpp