http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46316
davidxl <xinliangli at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC|davidxl at gcc dot gnu.org |xinliangli at gmail dot com --- Comment #7 from davidxl <xinliangli at gmail dot com> 2010-11-07 21:12:12 UTC --- It looks to me the problem is caused by double_int arithmetic (mul) overflow which is not properly checked. This results in wrong value range and VRP happily removes the cmp/jmp. Why double_int does not use the widest int type for low/high part on the host? David