https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67767
Bug ID: 67767 Summary: -Wsuggest-attribute=noreturn suggests noreturn for function which already has noreturn and cold. Product: gcc Version: 5.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: zerotype at yahoo dot com Target Milestone: --- (Observed in Ubuntu builds of g++ 4.9.2 and 5.1.0) I have a class containing various function pointers which are initialised depending on command-line parameters specified by the user. To catch any bugs which could result in one of the pointers not pointing to a valid function, the class's constructor normally default-initialises them to point to functions which throw exceptions - like so: //header file containing declaration: > typedef void (*objfunc_entity_specific_assignment_function) > (objective_function_struct& ofs, gmips_entity_specific_information_struct& > gesis, const sbox_size_object& sso); > void entity_specific_assignment_function_not_set [[gnu::cold, > gnu::noreturn]] (objective_function_struct& ofs, > gmips_entity_specific_information_struct& gesis, const sbox_size_object& sso); //cpp file: > void entity_specific_assignment_function_not_set(objective_function_struct& > ofs, gmips_entity_specific_information_struct& gesis, const sbox_size_object& > sso) > { > throw misc_exception(__FILE__" " + std::string(__PRETTY_FUNCTION__) + " > called.\n"); > } Before I added the gnu::cold attribute, compiling with -Wsuggest-attribute=noreturn did not result in the noreturn attribute being suggested, because of course the function already had it. After changing from [[gnu::noreturn]] to [[gnu::cold, gnu::noreturn]] I get: > warning: function might be candidate for attribute ‘noreturn’ > [-Wsuggest-attribute=noreturn] > void entity_specific_assignment_function_not_set(objective_function_struct& > ofs, gmips_entity_specific_information_struct& gesis, const sbox_size_object& > ^