https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101376
Bug ID: 101376
Summary: Missing
Wsuggest-attribute=const/Wsuggest-attribute=pure for
throwing functions, wrong Wattributes for pure/const
throwing functions
Product: gcc
Version: 11.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: harald at gigawatt dot nl
Target Milestone: ---
According to PR100409, const/pure functions are allowed to throw. As such, I
would expect that
void f() {
throw "!";
}
produces a diagnostic with -Wsuggest-attribute=const but no diagnostic is
produced.
In fact, if I modify this to add the attribute myself, like so:
__attribute__((const)) void f() {
throw "!";
}
I get "warning: 'const' attribute on function returning 'void'". This warning
is documented but now wrong. The documentation reads
"Because a const function cannot have any observable side effects it does not
make sense for it to return void. Declaring such a function is diagnosed."
A helper function to throw an exception makes sense to declare as returning
void, and meets the criteria of a const function.