Skip to content

Missed optimization of switch to arithmetic #67842

@ojeda

Description

@ojeda

From: rust-lang/rust#116272

define i8 @src(i32) { start: switch i32 %0, label %bb2 [ i32 0, label %bb5 i32 1, label %bb4 i32 255, label %bb1 ] bb2: ; preds = %start unreachable bb4: ; preds = %start br label %bb5 bb1: ; preds = %start br label %bb5 bb5: ; preds = %start, %bb1, %bb4 %.0 = phi i8 [ -1, %bb1 ], [ 1, %bb4 ], [ 0, %start ] ret i8 %.0 } define i8 @tgt(i32) { %_2 = trunc i32 %0 to i8 ret i8 %_2 }

https://alive2.llvm.org/ce/z/cT9KrY

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions