------- Comment #3 from manu at gcc dot gnu dot org  2006-11-28 22:35 -------
Roger,

The patch below fixes this bug. But it also introduces bug 19978 (multiple
warnings) in the C++ front-end. Yet, all regression testcases pass. They pass
because C++ overflow testcases are very limited and because the testsuite
cannot detect that the same warning has been emitted two times at the same
line. (Anyway to workaround the latter? How can we detect in the testcase below
that there are two "integer overflow in expression" and put a XFAIL to one of
them?) 

What do you think of this? 


Index: gcc/testsuite/g++.dg/conversion/nullptr1.C
===================================================================
--- gcc/testsuite/g++.dg/conversion/nullptr1.C  (revision 119259)
+++ gcc/testsuite/g++.dg/conversion/nullptr1.C  (working copy)
@@ -6,5 +6,5 @@
 void *p = 0;

 void *q = 0 * (INT_MAX + 1);  // { dg-error "invalid conversion" }
+// { dg-warning "integer overflow in expression" "" { target *-*-* } 8 }

-
Index: gcc/cp/typeck.c
===================================================================
--- gcc/cp/typeck.c     (revision 119259)
+++ gcc/cp/typeck.c     (working copy)
@@ -3719,6 +3719,9 @@
   result = fold_if_not_in_template (result);
   if (final_type != 0)
     result = cp_convert (final_type, result);
+
+  overflow_warning (result);
+
   return result;
 }
 ^L


-- 

manu at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |roger at eyesopen dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28986

Reply via email to