http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49718
Summary: please allow no_instrument_function attribute in class member definition/declaration Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: jojel...@gmail.com it says instrument.cc:10:6: error: can’t set ‘no_instrument_function’ attribute after definition isn't it false-positive? because in class/struct it is normal one to define such member function in it. #include <stdio.h> struct t { public: t(); __attribute__((no_instrument_function)) void a(){ } void __attribute__((no_instrument_function))b(){ } void c() __attribute__((no_instrument_function)){ } void d() __attribute__((no_instrument_function)); }; void t::d() {} int main() { t a; a.a(); } $ g++ instrument.cc -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/usr/libexec/gcc/i686-pc-cygwin/4.7.0/lto-wrapper.exe Target: i686-pc-cygwin Configured with: ./configure --config-cache --prefix=/usr --disable-win32-registry --enable-threads=win32 --enable-languages=c,c++,lto --with-win32-nlsapi=unicode --enable-tls --disable-bootstrap --enable-shared --disable-sjlj-exceptions --enable-gomp Thread model: win32 gcc version 4.7.0 20110708 (experimental) (GCC) COLLECT_GCC_OPTIONS='-v' '-shared-libgcc' '-mtune=generic' '-march=pentiumpro' /usr/libexec/gcc/i686-pc-cygwin/4.7.0/cc1plus.exe -quiet -v -D__CYGWIN32__ -D__CYGWIN__ -Dunix -D__unix__ -D__unix -idirafter /usr/lib/gcc/i686-pc-cygwin/4.7.0/../../../../i686-pc-cygwin/lib/../include/w32api -idirafter /usr/lib/gcc/i686-pc-cygwin/4.7.0/../../../../i686-pc-cygwin/lib/../../include/w32api instrument.cc -quiet -dumpbase instrument.cc -mtune=generic -march=pentiumpro -auxbase instrument -version -o /tmp/ccqnGK06.s GNU C++ (GCC) version 4.7.0 20110708 (experimental) (i686-pc-cygwin) compiled by GNU C version 4.7.0 20110622 (experimental), GMP version 5.0.0, MPFR version 2.4.2, MPC version 0.8.1 GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 ignoring duplicate directory "/usr/include" ignoring duplicate directory "/usr/lib/gcc/i686-pc-cygwin/4.7.0/../../../../i686-pc-cygwin/lib/../../include/w32api" #include "..." search starts here: #include <...> search starts here: /usr/lib/gcc/i686-pc-cygwin/4.7.0/../../../../include/c++/4.7.0 /usr/lib/gcc/i686-pc-cygwin/4.7.0/../../../../include/c++/4.7.0/i686-pc-cygwin /usr/lib/gcc/i686-pc-cygwin/4.7.0/../../../../include/c++/4.7.0/backward /usr/lib/gcc/i686-pc-cygwin/4.7.0/include /usr/local/include /usr/lib/gcc/i686-pc-cygwin/4.7.0/include-fixed /usr/lib/gcc/i686-pc-cygwin/4.7.0/../../../../i686-pc-cygwin/include /usr/lib/gcc/i686-pc-cygwin/4.7.0/../../../../i686-pc-cygwin/lib/../include/w32api End of search list. GNU C++ (GCC) version 4.7.0 20110708 (experimental) (i686-pc-cygwin) compiled by GNU C version 4.7.0 20110622 (experimental), GMP version 5.0.0, MPFR version 2.4.2, MPC version 0.8.1 GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 Compiler executable checksum: 68ba7c3bade77b76b9651c346a28b1de instrument.cc:6:46: error: can’t set ‘no_instrument_function’ attribute after definition instrument.cc:8:45: error: can’t set ‘no_instrument_function’ attribute after definition instrument.cc:10:6: error: can’t set ‘no_instrument_function’ attribute after definition