Open
Description
https://alive2.llvm.org/ce/z/7Mhqtr
define i64 @src(i8 %0) {
start:
switch i8 %0, label %bb2 [
i8 126, label %bb3
i8 127, label %bb4
i8 -128, label %bb5
]
bb2:
unreachable
bb3:
br label %bb10
bb4:
br label %bb10
bb5:
br label %bb10
bb10:
%result= phi i64 [ 3, %bb3 ], [ 4, %bb4 ], [ 5, %bb5 ]
ret i64 %result
}
It can be converted to:
define i64 @tgt(i8 %0) {
start:
%switch.tableidx = sub i8 %0, 126
%switch.idx.cast = zext i8 %switch.tableidx to i64
%switch.offset = add nuw nsw i64 %switch.idx.cast, 3
ret i64 %switch.offset
}