[Reland][Runtimes] Merge 'compile_commands.json' files from runtimes build (#116303)
[llvm-project.git] / llvm / test / CodeGen / X86 / basic-block-sections-cloning-indirect-invalid.ll
blobd8686cdfa098e068a3206bc3a279ef331e2a6f22
1 ;; Tests for invalid path cloning with -basic-block-sections involving indirect branches.
3 declare void @effect(i32 zeroext)
5 ;; Test failed application of path cloning for paths with indirect branches.
6 ; RUN: echo 'v1' > %t1
7 ; RUN: echo 'f bar' >> %t1
8 ; RUN: echo 'p 0 1 2' >> %t1
9 ; RUN: echo 'c 0 1.1 2.1 1' >> %t1
10 ; RUN: llc < %s -mtriple=x86_64-pc-linux -O0 -function-sections -basic-block-sections=%t1 2> %t1.err | FileCheck %s
11 ; RUN: FileCheck %s --check-prefix=WARN < %t1.err
12 ; RUN: echo 'v1' > %t2
13 ; RUN: echo 'f bar' >> %t2
14 ; RUN: echo 'p 1 2' >> %t2
15 ; RUN: echo 'c 0 1 2.1' >> %t2
16 ; RUN: llc < %s -mtriple=x86_64-pc-linux -O0 -function-sections -basic-block-sections=%t2 2> %t2.err | FileCheck %s
17 ; RUN: FileCheck %s --check-prefix=WARN < %t2.err
20 define void @bar(i1 %a, i1 %b) {
21 b0:
22   call void @effect(i32 0)
23   br i1 %a, label %b1, label %b2
24 b1:                                              ; preds = %b0
25   call void @effect(i32 1)
26   %0 = select i1 %b,                           ; <ptr> [#uses=1]
27               ptr blockaddress(@bar, %b2),
28               ptr blockaddress(@bar, %b3)
29   indirectbr ptr %0, [label %b2, label %b3]
30 b2:                                              ; preds = %b0, %b1
31   call void @effect(i32 2)
32   ret void
33 b3:
34   call void @effect(i32 3)                       ; preds = %b1
35   ret void
38 ; CHECK:   .section    .text.bar,"ax",@progbits
39 ; CHECK:   bar:
40 ; CHECK: # %bb.0:        # %b0
41 ; CHECK: # %bb.1:        # %b1
42 ; CHECK:   .section    .text.split.bar,"ax",@progbits
43 ; CHECK: bar.cold:       # %b2   
45 ; WARN: warning: block #1 has indirect branch and appears as the non-tail block of a path in function bar