brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · 0f84b89 Raw
72 lines · plain
1;; Test cloning a single path with -basic-block-sections.2 3declare void @effect(i32 zeroext)4 5;; Test a valid application of path cloning.6; RUN: echo 'v1' > %t7; RUN: echo 'f foo' >> %t8; RUN: echo 'p 0 3 5' >> %t9; RUN: echo 'c 0 3.1 5.1 1 2 3 4 5' >> %t10; RUN: llc < %s -mtriple=x86_64-pc-linux -O0 -function-sections -basic-block-sections=%t | FileCheck %s11; RUN: llc < %s -mtriple=x86_64-pc-linux -O0 -function-sections -basic-block-sections=%t -stop-after=bb-path-cloning | FileCheck %s --check-prefix=MIR12 13define void @foo(i1 %a, i1 %b, i1 %c, i1 %d) {14b0:15  call void @effect(i32 0)16  br i1 %a, label %b1, label %b317 18b1:                                           ; preds = %b019  call void @effect(i32 1)20  br i1 %b, label %b2, label %b321 22b2:                                             ; preds = %b123  call void @effect(i32 2)24  br label %b325 26b3:                                            ; preds = %b0, %b1, %b227  call void @effect(i32 3)28  br i1 %c, label %b4, label %b529 30b4:                                             ; preds = %b331  call void @effect(i32 4)32  br i1 %d, label %b5, label %cold33 34b5:                                            ; preds = %b3, %b435  call void @effect(i32 5)36  ret void37cold:38  call void @effect(i32 6)                     ; preds = %b439  ret void40}41 42;; Check the cloned block ids in MIR.43 44; MIR: bb.7.b3 (bb_id 3 1):45; MIR: bb.8.b5 (bb_id 5 1):46 47;; Check the final layout and branches.48 49;; bb section:50; CHECK:        .section    .text.foo,"ax",@progbits51; CHECK:      foo:52; CHECK:      # %bb.0:        # %b053; CHECK:        jne .LBB0_154; CHECK-NEXT: # %bb.7:        # %b355; CHECK:        jne .LBB0_456; CHECK-NEXT: # %bb.8:        # %b557; CHECK:        retq58; CHECK-NEXT: .LBB0_1:        # %b159; CHECK:        je .LBB0_360; CHECK-NEXT: # %bb.2:        # %b261; CHECK:        callq effect@PLT62; CHECK-NEXT: .LBB0_3:        # %b363; CHECK:        je .LBB0_564; CHECK-NEXT: .LBB0_4:        # %b465; CHECK:        je foo.cold66; CHECK-NEXT: .LBB0_5:        # %b567; CHECK:        retq68 69;; split section70; CHECK:        .section    .text.split.foo,"ax",@progbits71; CHECK:      foo.cold:      # %cold72