1cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hinesvoid call(); 2cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 3cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hinesstruct S { 4cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines static void foo() { call(); call(); } 5cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines static void bar() { call(); call(); } 6cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines static void baz() {} 7cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines}; 8cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 9cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines#ifdef FILE1 10cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines# define FUNC_NAME func1 11cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines# define FUNC_BODY \ 12cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines S::foo(); S::bar(); S::baz(); 13cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines#else 14cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines# define FUNC_NAME func2 15cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines# define FUNC_BODY \ 16cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines S::bar(); 17cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines#endif 18cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 19cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hinesvoid FUNC_NAME() { 20cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines FUNC_BODY 21cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines} 22cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 23cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines// Build instructions: 24cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines// $ clang -g -fPIC -c -DFILE1 arange-overlap.cc -o obj1.o 25cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines// $ clang -g -fPIC -c arange-overlap.cc -o obj2.o 26cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines// $ clang -shared obj1.o obj2.o -o <output> 27