https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84628
Bug ID: 84628 Summary: attribute(warning/error) should be evaluated before optimization Product: gcc Version: 7.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: jay.krell at cornell dot edu Target Milestone: --- This code should not error. It is derived from real world code. $ cat object.c #define ERROR __attribute__ ((__error__ ("do not call this"))) int (*f1)(); int f2 () { return f1 (); } ERROR int error1 () { return f2(); } ERROR int error2 () { return f2(); } $ $HOME/gcc720/bin/gcc -v Using built-in specs. COLLECT_GCC=/home/jay/gcc720/bin/gcc COLLECT_LTO_WRAPPER=/home/jay/gcc720/libexec/gcc/x86_64-pc-linux-gnu/7.2.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /src/gcc-7.2.0/configure -prefix=/home/jay/gcc720 -enable-languages=objc,obj-c++,go,fortran -disable-multilib Thread model: posix gcc version 7.2.0 (GCC) $ $HOME/gcc720/bin/gcc -c -O2 object.c object.c: In function ‘error2’: cc1: error: call to ‘error1’ declared with attribute error: do not call this I will try trunk.