re PR debug/83694 (New test case gcc.dg/pr83666.c from r256232 ICEs)
authorJakub Jelinek <jakub@redhat.com>
Sat, 6 Jan 2018 07:46:39 +0000 (08:46 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Sat, 6 Jan 2018 07:46:39 +0000 (08:46 +0100)
PR middle-end/83694
* cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.

From-SVN: r256307

gcc/ChangeLog
gcc/cfgexpand.c

index a325a19a9933ce80df90f2938e14a4de501fb210..51f92bcf0b08eaf43945c096b878a6a891621065 100644 (file)
@@ -1,3 +1,9 @@
+2018-01-06  Jakub Jelinek  <jakub@redhat.com>
+
+       PR middle-end/83694
+       * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
+       and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
+
 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
 
        PR target/83604
index 72fd8fd5a761e9f58edeeca2a4f68879e4d46399..2ee6fbac2e30be46e5259324c067229fb75f13a1 100644 (file)
@@ -4534,8 +4534,12 @@ expand_debug_expr (tree exp)
        if (MEM_P (op0))
          {
            if (mode1 == VOIDmode)
-             /* Bitfield.  */
-             mode1 = smallest_int_mode_for_size (bitsize);
+             {
+               if (maybe_gt (bitsize, MAX_BITSIZE_MODE_ANY_INT))
+                 return NULL;
+               /* Bitfield.  */
+               mode1 = smallest_int_mode_for_size (bitsize);
+             }
            poly_int64 bytepos = bits_to_bytes_round_down (bitpos);
            if (maybe_ne (bytepos, 0))
              {