There is also two test file crashed. The motivation to do this is I
found that the following file was miscompiled:
define void @zext_sdiv_not_ok3_maybe_poison_denum(i32 noundef %nn, i16 %xx) { entry: %n = and i32 %nn, 123 %x = or i16 %xx, 1 br label %loop loop: call void @maythrow() %zext = zext i16 %x to i32 %div = sdiv i32 %n, %zext call void @use.i32(i32 %div) br label %loop }
LICM hoisted sdiv to entry block incorrectly. Since if %xx is poison,
sdiv is UB.