C++ PATCH: Fix C++/10915

Gabriel Dos Reis gdrc@integrable-solutions.net
Sat Jun 21 15:13:00 GMT 2003


This patchlet fixes PR C++/10915.  Now we issue the diagnostic only if
-Wconversion.  Ideally, we should issue the diagnostic only in case of
"potential" use.

Applied to branch and head.  Regtested on an i686-pc-linux-gnu. No
regression. 

-- Gaby

Index: testsuite/ChangeLog
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/ChangeLog,v
retrieving revision 1.2261.2.196
diff -p -r1.2261.2.196 ChangeLog
*** testsuite/ChangeLog	20 Jun 2003 19:27:43 -0000	1.2261.2.196
--- testsuite/ChangeLog	21 Jun 2003 12:25:03 -0000
***************
*** 1,3 ****
--- 1,8 ----
+ 2003-06-21  Gabriel Dos Reis <gdr@integrable-solutions.net>
+ 
+ 	* g++.old-deja/g++.jason/conversion5.C: Adjust option.
+ 	* g++.old-deja/g++.bugs/900215_01.C: Likewise.
+ 
  2003-06-20  Mark Mitchell  <mark@codesourcery.com>
  
  	PR c++/10888
Index: testsuite/g++.dg/warn/conversion-function-1.C
===================================================================
RCS file: testsuite/g++.dg/warn/conversion-function-1.C
diff -N testsuite/g++.dg/warn/conversion-function-1.C
*** /dev/null	1 Jan 1970 00:00:00 -0000
--- testsuite/g++.dg/warn/conversion-function-1.C	21 Jun 2003 12:25:04 -0000
***************
*** 0 ****
--- 1,8 ----
+ // Copyright (C) 2003 Free Software Foundation
+ // Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
+ // { dg-options "-Wno-conversion" }
+ 
+ struct A {
+    operator A&();
+ };
+ 
Index: testsuite/g++.old-deja/g++.bugs/900215_01.C
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/g++.old-deja/g++.bugs/900215_01.C,v
retrieving revision 1.3
diff -p -r1.3 900215_01.C
*** testsuite/g++.old-deja/g++.bugs/900215_01.C	8 Mar 2000 17:09:57 -0000	1.3
--- testsuite/g++.old-deja/g++.bugs/900215_01.C	21 Jun 2003 12:25:04 -0000
***************
*** 19,24 ****
--- 19,26 ----
  // 8/3/2000 (nathan): The std allows you to define such an op, but
  // it will never be called. [class.conv.fct]. Make it an unconditional warning.
  
+ // Special Options: -Wconversion
+ 
  struct struct0 {
  
    operator void ();		// WARNING - operator void
Index: testsuite/g++.old-deja/g++.jason/conversion5.C
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/g++.old-deja/g++.jason/conversion5.C,v
retrieving revision 1.2
diff -p -r1.2 conversion5.C
*** testsuite/g++.old-deja/g++.jason/conversion5.C	16 Dec 1998 21:32:34 -0000	1.2
--- testsuite/g++.old-deja/g++.jason/conversion5.C	21 Jun 2003 12:25:04 -0000
***************
*** 1,4 ****
--- 1,5 ----
  // Build don't link:
+ // Special Options: -Wconversion
  struct A { };
  struct B: public A {
    A a;
Index: cp/ChangeLog
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cp/ChangeLog,v
retrieving revision 1.3076.2.157
diff -p -r1.3076.2.157 ChangeLog
*** cp/ChangeLog	20 Jun 2003 15:46:37 -0000	1.3076.2.157
--- cp/ChangeLog	21 Jun 2003 12:25:15 -0000
***************
*** 1,3 ****
--- 1,9 ----
+ 2003-06-21  Gabriel Dos Reis <gdr@integrable-solutions.net>
+ 
+ 	PR c++/10915
+ 	* decl.c (grok_op_properties): Warn possible confusing conversion
+ 	only if -Wconversion.
+ 
  2003-06-20  Mark Mitchell  <mark@codesourcery.com>
  
  	PR c++/10845
Index: cp/decl.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cp/decl.c,v
retrieving revision 1.965.2.51
diff -p -r1.965.2.51 decl.c
*** cp/decl.c	20 Jun 2003 05:57:16 -0000	1.965.2.51
--- cp/decl.c	21 Jun 2003 12:25:23 -0000
*************** grok_op_properties (decl, friendp)
*** 13235,13241 ****
  		       && DERIVED_FROM_P (t, current_class_type))
  		what = "a base class";
  
! 	      if (what)
  		warning ("conversion to %s%s will never use a type conversion operator",
  			 ref ? "a reference to " : "", what);
  	    }
--- 13235,13241 ----
  		       && DERIVED_FROM_P (t, current_class_type))
  		what = "a base class";
  
! 	      if (what && warn_conversion)
  		warning ("conversion to %s%s will never use a type conversion operator",
  			 ref ? "a reference to " : "", what);
  	    }



More information about the Gcc-patches mailing list