Skip to content

Missed optimization of switch to arithmetic #67843

@ojeda

Description

@ojeda

From: rust-lang/rust#116272

target datalayout = "n8:16:32:64"

define i32 @src(i8 %0) {
start:
  switch i8 %0, label %bb2 [
    i8 0, label %bb5
    i8 1, label %bb4
    i8 -1, 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 i32 [ 255, %bb1 ], [ 1, %bb4 ], [ 0, %start ]
  ret i32 %.0
}

define i32 @tgt(i8) {
  %_2 = zext i8 %0 to i32
  ret i32 %_2
}

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions