On January 5, 2018 10:55:00 PM GMT+01:00, Jakub Jelinek <ja...@redhat.com> wrote: >Hi! > >The recently added testcase for PR83666 ICEs on powerpc*/sparc* >and perhaps other targets, where get_inner_reference gives us >VOIDmode for a 512-bit field and smallest_int_mode_for_size >ICEs on it because there is no such integer mode. > >Fixed by giving up above MAX_BITSIZE_MODE_ANY_INT, that would have been >BLKmode and not really useful for debug info generation anyway. > >Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
OK. Richard. >2018-01-05 Jakub Jelinek <ja...@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. > >--- gcc/cfgexpand.c.jj 2018-01-04 12:43:38.199537090 +0100 >+++ gcc/cfgexpand.c 2018-01-05 12:10:46.960037601 +0100 >@@ -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)) > { > > Jakub