39 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -S -passes=jump-threading < %s | FileCheck %s3; PR91124 5; This is actually a test for value tracking. Jump threading produces6; "%phi = phi i16" when it removes all edges leading to %unreachable.7; The .ll parser won't let us write that directly since it's invalid code.8 9define void @func() nounwind {10; CHECK-LABEL: @func(11; CHECK-NEXT: entry:12; CHECK-NEXT: br label [[BB:%.*]]13; CHECK: bb:14; CHECK-NEXT: br label [[BB]]15; CHECK: unreachable:16; CHECK-NEXT: [[PHI:%.*]] = phi i16 [ [[ADD:%.*]], [[UNREACHABLE:%.*]] ], [ 0, [[NEXT:%.*]] ]17; CHECK-NEXT: [[ADD]] = add i16 0, [[PHI]]18; CHECK-NEXT: [[CMP:%.*]] = icmp slt i16 [[PHI]], 019; CHECK-NEXT: br i1 [[CMP]], label [[UNREACHABLE]], label [[NEXT]]20; CHECK: next:21; CHECK-NEXT: br label [[UNREACHABLE]]22;23entry:24 br label %bb25 26bb:27 br label %bb28 29unreachable:30 %phi = phi i16 [ %add, %unreachable ], [ 0, %next ]31 %add = add i16 0, %phi32 %cmp = icmp slt i16 %phi, 033 br i1 %cmp, label %unreachable, label %next34 35next:36 br label %unreachable37}38 39