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.  */

Reply via email to