Files
clang-p2996/llvm/test/Transforms/Reassociate/callbr.ll
Nikita Popov 8f3fd26b74 [Reassociate] Use getInsertionPointerAfterDef()
This simplifies the code and fixes handling for the callbr case,
where the instruction needs to be inserted in the normal
destination, rather than after the terminator.

Originally part of D129660.
2022-08-31 11:10:24 +02:00

26 lines
697 B
LLVM

; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -reassociate < %s | FileCheck %s
define i32 @test(i1 %b) {
; CHECK-LABEL: @test(
; CHECK-NEXT: [[RES:%.*]] = callbr i32 asm "", "=r,!i"()
; CHECK-NEXT: to label [[NORMAL:%.*]] [label %abnormal]
; CHECK: normal:
; CHECK-NEXT: [[FACTOR:%.*]] = mul i32 [[RES]], -2
; CHECK-NEXT: [[SUB2:%.*]] = add i32 [[FACTOR]], 5
; CHECK-NEXT: ret i32 [[SUB2]]
; CHECK: abnormal:
; CHECK-NEXT: ret i32 0
;
%res = callbr i32 asm "", "=r,!i"()
to label %normal [label %abnormal]
normal:
%sub1 = sub nsw i32 5, %res
%sub2 = sub nsw i32 %sub1, %res
ret i32 %sub2
abnormal:
ret i32 0
}