Skip to content

Missed optimization of switch to arithmetic #67842

Open
@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