https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67194
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- For the second testcase the issue is the aliasing store *operand_loc = 0; which can invalidate the predicate value. Fixed with -fstrict-aliasing (or -O2). Nothing uninit analysis can do here. The first testcase has a similar issue at -O2 because of the union now containing rtx *. I don't see what we can do here - if there's no aliasing the code needs to say that or be optimized in source.