On 2016.11.29 at 15:14 +0100, Jakub Jelinek wrote: > On Tue, Nov 29, 2016 at 03:08:15PM +0100, Markus Trippelsdorf wrote: > > Building gcc with -fsanitize=undefined shows: > > rtlanal.c:5210:38: runtime error: shift exponent 4294967295 is too > > large for 64-bit type 'long unsigned int' > > > > 5210 return nonzero & (HOST_WIDE_INT_1U << (bitwidth - 1)) > > 5211 ? 1 : bitwidth - floor_log2 (nonzero) - 1; > > > > Here (bitwidth - 1) wraps around because bitwidth is zero and unsigned. > > Which modes have precision of 0? I'd expect just VOIDmode and BLKmode, any > others? And for those I'd say it is a bug to call num_sign_bit_copies*.
Yes, only VOIDmode and BLKmode: 233 const unsigned short mode_precision[NUM_MACHINE_MODES] = 234 { 235 0, /* VOID */ 236 0, /* BLK */ -- Markus