brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 7bba056 Raw
76 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=correlated-propagation -S < %s | FileCheck %s3 4; Checks that we don't crash on conflicting facts about a value5; (i.e. unreachable code)6 7; Test that we can handle conflict edge facts8 9define i8 @test(i8 %a) {10; CHECK-LABEL: @test(11; CHECK-NEXT:    [[CMP1:%.*]] = icmp eq i8 [[A:%.*]], 512; CHECK-NEXT:    br i1 [[CMP1]], label [[NEXT:%.*]], label [[EXIT:%.*]]13; CHECK:       next:14; CHECK-NEXT:    br i1 false, label [[DEAD:%.*]], label [[EXIT]]15; CHECK:       dead:16; CHECK-NEXT:    ret i8 517; CHECK:       exit:18; CHECK-NEXT:    ret i8 019;20  %cmp1 = icmp eq i8 %a, 521  br i1 %cmp1, label %next, label %exit22next:23  %cmp2 = icmp eq i8 %a, 324  br i1 %cmp2, label %dead, label %exit25dead:26; NOTE: undef, or 3 would be equal valid27  ret i8 %a28exit:29  ret i8 030}31 32declare void @llvm.assume(i1)33 34; Test that we can handle conflicting assume vs edge facts35 36define i8 @test2(i8 %a) {37; CHECK-LABEL: @test2(38; CHECK-NEXT:    [[CMP1:%.*]] = icmp eq i8 [[A:%.*]], 539; CHECK-NEXT:    call void @llvm.assume(i1 [[CMP1]])40; CHECK-NEXT:    br i1 false, label [[DEAD:%.*]], label [[EXIT:%.*]]41; CHECK:       dead:42; CHECK-NEXT:    ret i8 543; CHECK:       exit:44; CHECK-NEXT:    ret i8 045;46  %cmp1 = icmp eq i8 %a, 547  call void @llvm.assume(i1 %cmp1)48  %cmp2 = icmp eq i8 %a, 349  br i1 %cmp2, label %dead, label %exit50dead:51  ret i8 %a52exit:53  ret i8 054}55 56define i8 @test3(i8 %a) {57; CHECK-LABEL: @test3(58; CHECK-NEXT:    [[CMP1:%.*]] = icmp eq i8 [[A:%.*]], 559; CHECK-NEXT:    br i1 [[CMP1]], label [[DEAD:%.*]], label [[EXIT:%.*]]60; CHECK:       dead:61; CHECK-NEXT:    call void @llvm.assume(i1 false)62; CHECK-NEXT:    ret i8 563; CHECK:       exit:64; CHECK-NEXT:    ret i8 065;66  %cmp1 = icmp eq i8 %a, 567  br i1 %cmp1, label %dead, label %exit68dead:69  %cmp2 = icmp eq i8 %a, 370  call void @llvm.assume(i1 %cmp2)71  ret i8 %a72exit:73  ret i8 074}75 76