brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 17f3b1a Raw
70 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=jump-threading -S < %s | FileCheck %s3 4declare void @f()5declare void @g()6declare void @h()7 8define i32 @test(i1 %cond, i1 %a, i1 %b) {9; CHECK-LABEL: @test(10; CHECK-NEXT:    br i1 [[COND:%.*]], label [[A:%.*]], label [[C:%.*]]11; CHECK:       A:12; CHECK-NEXT:    call void @f()13; CHECK-NEXT:    br i1 [[A:%.*]], label [[EXIT1:%.*]], label [[EXIT2:%.*]]14; CHECK:       C:15; CHECK-NEXT:    call void @g()16; CHECK-NEXT:    br i1 [[B:%.*]], label [[EXIT1]], label [[EXIT2]]17; CHECK:       EXIT1:18; CHECK-NEXT:    ret i32 019; CHECK:       EXIT2:20; CHECK-NEXT:    ret i32 121;22  br i1 %cond, label %A, label %B23A:24  call void @f()25  br label %C26B:27  call void @g()28  br label %C29C:30  %p = phi i1 [%a, %A], [%b, %B] ; Check that this is removed31  br i1 %p, label %EXIT1, label %EXIT232EXIT1:33  ret i32 034EXIT2:35  ret i32 136}37 38define i32 @test2(i1 %cond, i1 %a, i1 %b) {39; CHECK-LABEL: @test2(40; CHECK-NEXT:    br i1 [[COND:%.*]], label [[A:%.*]], label [[C:%.*]]41; CHECK:       A:42; CHECK-NEXT:    call void @f()43; CHECK-NEXT:    [[P_FR1:%.*]] = freeze i1 [[A:%.*]]44; CHECK-NEXT:    br i1 [[P_FR1]], label [[EXIT1:%.*]], label [[EXIT2:%.*]]45; CHECK:       C:46; CHECK-NEXT:    call void @g()47; CHECK-NEXT:    [[P_FR:%.*]] = freeze i1 [[B:%.*]]48; CHECK-NEXT:    br i1 [[P_FR]], label [[EXIT1]], label [[EXIT2]]49; CHECK:       EXIT1:50; CHECK-NEXT:    ret i32 051; CHECK:       EXIT2:52; CHECK-NEXT:    ret i32 153;54  br i1 %cond, label %A, label %B55A:56  call void @f()57  br label %C58B:59  call void @g()60  br label %C61C:62  %p = phi i1 [%a, %A], [%b, %B] ; Check that this is removed63  %p.fr = freeze i1 %p64  br i1 %p.fr, label %EXIT1, label %EXIT265EXIT1:66  ret i32 067EXIT2:68  ret i32 169}70