1/* { dg-do compile } */ 2/* { dg-options "-O2 -finstrument-functions" } */ 3/* { dg-additional-options "-mno-explicit-relocs" { target alpha*-*-* } } */ 4/* { dg-additional-options "-mno-relax-pic-calls" { target mips*-*-* } } */ 5/* { dg-final { scan-assembler-times "__cyg_profile_func_enter" 1 { target { ! { hppa*-*-hpux* } } } } } */ 6/* { dg-final { scan-assembler-times "__cyg_profile_func_enter,%r" 1 { target hppa*-*-hpux* } } } */ 7 8#define NOINSTR __attribute__((no_instrument_function)) 9 10struct t 11{ 12 public: 13 /* Function code should be instrumented */ 14 __attribute__((noinline)) t() {} 15 16 /* Function t::a() should not be instrumented */ 17 NOINSTR void a(){ 18 } 19 /* Function t::b() should not be instrumented */ 20 void NOINSTR b(){ 21 } 22 /* Function t::c() should not be instrumented */ 23 void c() NOINSTR { 24 } 25 /* Function t::d() should not be instrumented */ 26 void d() NOINSTR; 27}; 28 29void t::d() 30{ 31} 32 33/* Function call_all_functions() should not be instrumented */ 34struct t call_all_functions() __attribute__((no_instrument_function)); 35struct t call_all_functions() 36{ 37 struct t a; /* Constructor not inlined */ 38 a.a(); /* Inlined t::a() should not be instrumented */ 39 a.b(); /* Inlined t::b() should not be instrumented */ 40 a.c(); /* Inlined t::c() should not be instrumented */ 41 a.d(); /* Inlined t::d() should not be instrumented */ 42 return a; 43} 44 45