brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1000 B · 6c76de2 Raw
44 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=licm -S < %s | FileCheck %s3 4define void @hoist(i1 %a) {5; CHECK-LABEL: @hoist(6; CHECK-NEXT:  entry:7; CHECK-NEXT:    [[B:%.*]] = freeze i1 [[A:%.*]]8; CHECK-NEXT:    br label [[LOOP:%.*]]9; CHECK:       loop:10; CHECK-NEXT:    call void @use(i1 [[B]])11; CHECK-NEXT:    br label [[LOOP]]12;13entry:14  br label %loop15loop:16  %b = freeze i1 %a17  call void @use(i1 %b)18  br label %loop19}20 21define i1 @sink(i1 %a) {22; CHECK-LABEL: @sink(23; CHECK-NEXT:  entry:24; CHECK-NEXT:    br label [[LOOP:%.*]]25; CHECK:       loop:26; CHECK-NEXT:    [[C:%.*]] = call i1 @cond()27; CHECK-NEXT:    br i1 [[C]], label [[LOOP]], label [[EXIT:%.*]]28; CHECK:       exit:29; CHECK-NEXT:    [[FR_LE:%.*]] = freeze i1 [[A:%.*]]30; CHECK-NEXT:    ret i1 [[FR_LE]]31;32entry:33  br label %loop34loop:35  %fr = freeze i1 %a36  %c = call i1 @cond()37  br i1 %c, label %loop, label %exit38exit:39  ret i1 %fr40}41 42declare i1 @cond()43declare void @use(i1)44