This PR notes that in this warning:
const.ii:5:25: warning: type qualifiers ignored on function return type
[-Wignored-qualifiers]
const double value() const {return val;}
^~~~~
we are pointing at the wrong qualifier. Below I'm attaching a patch that
makes it point at the first qualifier of the return type (or the return
type in case it's a typedef with qualifiers) instead. However, it turns
out this is not consistent with the C frontend, which points at the
function name for this warning.
I'm guessing we want to be consistent between frontends, and I also have
a similar patch for C. Before I finalize it all with testcases and
everything - which behaviour is desired?
Bernd
Index: gcc/cp/decl.c
===================================================================
--- gcc/cp/decl.c (revision 233217)
+++ gcc/cp/decl.c (working copy)
@@ -10009,8 +10009,14 @@ grokdeclarator (const cp_declarator *dec
if (type_quals != TYPE_UNQUALIFIED)
{
+ location_t loc;
+ loc = smallest_type_quals_location (type_quals,
+ declspecs->locations);
+ if (loc == UNKNOWN_LOCATION)
+ loc = declspecs->locations[ds_type_spec];
if (SCALAR_TYPE_P (type) || VOID_TYPE_P (type))
- warning (OPT_Wignored_qualifiers,
+ warning_at (loc,
+ OPT_Wignored_qualifiers,
"type qualifiers ignored on function return type");
/* We now know that the TYPE_QUALS don't apply to the
decl, but to its return type. */