]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c++/22551 ([ICE] in tree_low_cst, at tree.c:3843)
authorNathan Sidwell <nathan@codesourcery.com>
Mon, 17 Oct 2005 13:54:34 +0000 (13:54 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Mon, 17 Oct 2005 13:54:34 +0000 (13:54 +0000)
.: PR c++/22551
* c-common.c (c_add_case_label): Revert my 2005-10-14 clearing of
overflow flags.
testsuite:
PR c++/22551
* g++.dg/other/switch2.C: Remove expected warnings.

From-SVN: r105501

gcc/ChangeLog
gcc/c-common.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/other/switch2.C

index 9825d7463eb43e447ef62f3616755bc4e322f90e..b34969c714b1debd90e09f274f08eecf53f17b34 100644 (file)
@@ -1,3 +1,9 @@
+2005-10-17  Nathan Sidwell  <nathan@codesourcery.com>
+
+       PR c++/22551
+       * c-common.c (c_add_case_label): Revert my 2005-10-14 clearing of
+       overflow flags.
+
 2005-10-17  Kaz Kojima  <kkojima@gcc.gnu.org>
 
        * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_schedule_insns
index c5ba85e3d0a25caa7907528bd2ac4885ce9bfe9b..86bb1c856cc076d959bae7aa8acb9c4954c5a61e 100644 (file)
@@ -3590,10 +3590,6 @@ c_add_case_label (splay_tree cases, tree cond, tree orig_type,
       low_value = convert_and_check (type, low_value);
       if (low_value == error_mark_node)
        goto error_out;
-      /* Do not propagate any overflow information past this point.
-        It is safe to just clear the flags, as any constants with
-        them set will not be shared.  */
-      TREE_CONSTANT_OVERFLOW (low_value) = TREE_OVERFLOW (low_value) = 0;
     }
   if (high_value)
     {
@@ -3601,7 +3597,6 @@ c_add_case_label (splay_tree cases, tree cond, tree orig_type,
       high_value = convert_and_check (type, high_value);
       if (high_value == error_mark_node)
        goto error_out;
-      TREE_CONSTANT_OVERFLOW (high_value) = TREE_OVERFLOW (high_value) = 0;
     }
 
   if (low_value && high_value)
index 6eeadc5b343b8e9fadee886573c468f39617184a..e17dc16bf02f44cf74cffe3ed00e9e3ebd33d1f7 100644 (file)
@@ -1,5 +1,8 @@
 2005-10-17  Nathan Sidwell  <nathan@codesourcery.com>
 
+       PR c++/22551
+       * g++.dg/other/switch2.C: Remove expected warnings.
+
        PR c++/21353
        * g++.dg/template/defarg6.C: New.
 
index a2352c0acbc9c8ed5bc106ae253cc4e4ee32f274..6994e2a39bb5f6fa1b1155314d50116eb6720af6 100644 (file)
@@ -4,7 +4,7 @@
 // PR 22551:ICE
 // Origin:  Johnny Casey <emailwastefilter-bugzillagccorg@yahoo.com>
 
-const int B = 0x80000000;
+const int B = ~(~0u >> 1);
 
 #define b(x) (B + x)
 
@@ -13,10 +13,11 @@ int Foo (int error)
 {
   switch (error)
   {
-  case b (1): return 0; // { dg-error "overflow" "" }
-  case b (2): return 0; // { dg-error "overflow" "" }
-  case b (3): return 0; // { dg-error "overflow" "" }
-  case b (4): return 0; // { dg-error "overflow" "" }
-  case b (5): return 0; // { dg-error "overflow" "" }
- }
+  case b (1): return 0;
+  case b (2): return 0;
+  case b (3): return 0;
+  case b (4): return 0;
+  case b (5): return 0;
+  }
+  return 0;
 }