Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/Transforms/JumpThreading/pr46857-callbr.ll
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py | ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py | ||||
; RUN: opt < %s -jump-threading -S | FileCheck %s | ; RUN: opt < %s -jump-threading -S | FileCheck %s | ||||
define i1 @func(i1 %arg, i32 %arg1, i1 %arg2) { | define i1 @func(i1 %arg, i32 %arg1, i1 %arg2) { | ||||
; CHECK-LABEL: @func( | ; CHECK-LABEL: @func( | ||||
; CHECK-NEXT: bb: | ; CHECK-NEXT: bb: | ||||
; CHECK-NEXT: br i1 [[ARG:%.*]], label [[BB7:%.*]], label [[BB4:%.*]] | ; CHECK-NEXT: br i1 [[ARG:%.*]], label [[BB7:%.*]], label [[BB4:%.*]] | ||||
; CHECK: bb4: | ; CHECK: bb4: | ||||
; CHECK-NEXT: callbr void asm sideeffect "", "!i"() | ; CHECK-NEXT: callbr void asm sideeffect "", "!i"() | ||||
; CHECK-NEXT: to label [[BB7_THR_COMM:%.*]] [label %bb7.thr_comm] | ; CHECK-NEXT: to label [[BB6:%.*]] [label %bb6] | ||||
; CHECK: bb7.thr_comm: | ; CHECK: bb6: | ||||
; CHECK-NEXT: [[I91:%.*]] = xor i1 [[ARG2:%.*]], [[ARG]] | ; CHECK-NEXT: [[I91:%.*]] = xor i1 [[ARG2:%.*]], [[ARG]] | ||||
; CHECK-NEXT: br i1 [[I91]], label [[BB11:%.*]], label [[BB11]] | ; CHECK-NEXT: br i1 [[I91]], label [[BB11:%.*]], label [[BB11]] | ||||
; CHECK: bb7: | ; CHECK: bb7: | ||||
; CHECK-NEXT: [[I:%.*]] = icmp eq i32 [[ARG1:%.*]], 0 | ; CHECK-NEXT: [[I:%.*]] = icmp eq i32 [[ARG1:%.*]], 0 | ||||
; CHECK-NEXT: [[I9:%.*]] = xor i1 [[I]], [[ARG]] | ; CHECK-NEXT: [[I9:%.*]] = xor i1 [[I]], [[ARG]] | ||||
; CHECK-NEXT: br i1 [[I9]], label [[BB11]], label [[BB11]] | ; CHECK-NEXT: br i1 [[I9]], label [[BB11]], label [[BB11]] | ||||
; CHECK: bb11: | ; CHECK: bb11: | ||||
; CHECK-NEXT: [[I93:%.*]] = phi i1 [ [[I91]], [[BB7_THR_COMM]] ], [ [[I9]], [[BB7]] ], [ [[I91]], [[BB7_THR_COMM]] ], [ [[I9]], [[BB7]] ] | ; CHECK-NEXT: [[I92:%.*]] = phi i1 [ [[I91]], [[BB6]] ], [ [[I91]], [[BB6]] ], [ [[I9]], [[BB7]] ], [ [[I9]], [[BB7]] ] | ||||
; CHECK-NEXT: ret i1 [[I93]] | ; CHECK-NEXT: ret i1 [[I92]] | ||||
; | ; | ||||
bb: | bb: | ||||
br i1 %arg, label %bb3, label %bb4 | br i1 %arg, label %bb3, label %bb4 | ||||
bb3: | bb3: | ||||
%i = icmp eq i32 %arg1, 0 | %i = icmp eq i32 %arg1, 0 | ||||
br label %bb7 | br label %bb7 | ||||
Show All 21 Lines |