| /* { dg-do compile } */ |
| /* { dg-options "-O2 -finstrument-functions" } */ |
| /* { dg-additional-options "-mno-explicit-relocs" { target alpha*-*-* } } */ |
| /* { dg-additional-options "-mno-relax-pic-calls" { target mips*-*-* } } */ |
| /* { dg-final { scan-assembler-times "__cyg_profile_func_enter" 1 { target { ! { hppa*-*-hpux* } } } } } */ |
| /* { dg-final { scan-assembler-times "__cyg_profile_func_enter,%r" 1 { target hppa*-*-hpux* } } } */ |
| |
| #define NOINSTR __attribute__((no_instrument_function)) |
| |
| struct t |
| { |
| public: |
| /* Function code should be instrumented */ |
| __attribute__((noinline)) t() {} |
| |
| /* Function t::a() should not be instrumented */ |
| NOINSTR void a(){ |
| } |
| /* Function t::b() should not be instrumented */ |
| void NOINSTR b(){ |
| } |
| /* Function t::c() should not be instrumented */ |
| void c() NOINSTR { |
| } |
| /* Function t::d() should not be instrumented */ |
| void d() NOINSTR; |
| }; |
| |
| void t::d() |
| { |
| } |
| |
| /* Function call_all_functions() should not be instrumented */ |
| struct t call_all_functions() __attribute__((no_instrument_function)); |
| struct t call_all_functions() |
| { |
| struct t a; /* Constructor not inlined */ |
| a.a(); /* Inlined t::a() should not be instrumented */ |
| a.b(); /* Inlined t::b() should not be instrumented */ |
| a.c(); /* Inlined t::c() should not be instrumented */ |
| a.d(); /* Inlined t::d() should not be instrumented */ |
| return a; |
| } |
| |