https://alive2.llvm.org/ce/z/7Mhqtr ```llvm 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: ```llvm 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 } ```