Fangrui Song 6b852ffa99 [Sink] Process basic blocks with a single successor
This condition seems unnecessary.

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D93511
2022-11-18 01:23:12 +00:00

26 lines
644 B
LLVM

; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S < %s -passes=sink | FileCheck %s
define i32 @single_succ(i1 %b, ptr %a) {
; CHECK-LABEL: @single_succ(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[IF:%.*]]
; CHECK: if:
; CHECK-NEXT: br i1 [[B:%.*]], label [[THEN:%.*]], label [[ELSE:%.*]]
; CHECK: then:
; CHECK-NEXT: ret i32 42
; CHECK: else:
; CHECK-NEXT: [[L:%.*]] = load i32, ptr [[A:%.*]], align 4
; CHECK-NEXT: ret i32 [[L]]
;
entry:
%l = load i32, ptr %a, align 4
br label %if
if:
br i1 %b, label %then, label %else
then:
ret i32 42
else:
ret i32 %l
}