https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101941
--- Comment #17 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #6) > *** Bug 102361 has been marked as a duplicate of this bug. *** Basic block 4 freq:0.00 size: 1 time:0.00 __write_overflow (); freq:0.00 size: 2 time:0.00 fortify_panic (&__func__); Cannot split: warning or error attribute. found articulation at bb 4 but cannot split found articulation at bb 3 So basically in this case uncharge_gather_clear is marked as gnu_inline but not always_inline. It is defined as: static inline void uncharge_gather_clear(struct uncharge_gather *ug) Which got expanded as: static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void uncharge_gather_clear(struct uncharge_gather *ug) Which is due to: https://github.com/torvalds/linux/blob/master/include/linux/compiler_types.h#L142