annotate llvm/test/Transforms/SpeculateAroundPHIs/pr42991.ll @ 207:2e18cbf3894f

LLVM12
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 08 Jun 2021 06:07:14 +0900
parents 1d019706d866
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 ; RUN: opt -S -passes=spec-phis %s
anatofuz
parents:
diff changeset
2
anatofuz
parents:
diff changeset
3 ; This testcase crashes during the speculate around PHIs pass. The pass however
anatofuz
parents:
diff changeset
4 ; results in no changes.
anatofuz
parents:
diff changeset
5
anatofuz
parents:
diff changeset
6 define i32 @test1() {
anatofuz
parents:
diff changeset
7 entry:
anatofuz
parents:
diff changeset
8 callbr void asm sideeffect "", "X,X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@test1, %return), i8* blockaddress(@test1, %f))
anatofuz
parents:
diff changeset
9 to label %asm.fallthrough [label %return, label %f]
anatofuz
parents:
diff changeset
10
anatofuz
parents:
diff changeset
11 asm.fallthrough:
anatofuz
parents:
diff changeset
12 br label %return
anatofuz
parents:
diff changeset
13
anatofuz
parents:
diff changeset
14 f:
anatofuz
parents:
diff changeset
15 br label %return
anatofuz
parents:
diff changeset
16
anatofuz
parents:
diff changeset
17 return:
anatofuz
parents:
diff changeset
18 %retval.0 = phi i32 [ 0, %f ], [ 1, %asm.fallthrough ], [ 1, %entry ]
anatofuz
parents:
diff changeset
19 ret i32 %retval.0
anatofuz
parents:
diff changeset
20 }
anatofuz
parents:
diff changeset
21
anatofuz
parents:
diff changeset
22 define void @test2() {
anatofuz
parents:
diff changeset
23 entry:
anatofuz
parents:
diff changeset
24 br label %tailrecurse
anatofuz
parents:
diff changeset
25
anatofuz
parents:
diff changeset
26 tailrecurse:
anatofuz
parents:
diff changeset
27 %call = tail call i32 @test3()
anatofuz
parents:
diff changeset
28 %tobool1 = icmp eq i32 %call, 0
anatofuz
parents:
diff changeset
29 callbr void asm sideeffect "", "X,X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@test2, %test1.exit), i8* blockaddress(@test2, %f.i))
anatofuz
parents:
diff changeset
30 to label %if.end6 [label %test1.exit, label %f.i]
anatofuz
parents:
diff changeset
31
anatofuz
parents:
diff changeset
32 f.i:
anatofuz
parents:
diff changeset
33 br label %test1.exit
anatofuz
parents:
diff changeset
34
anatofuz
parents:
diff changeset
35 test1.exit:
anatofuz
parents:
diff changeset
36 %retval.0.i = phi i1 [ false, %f.i ], [ true, %tailrecurse ]
anatofuz
parents:
diff changeset
37 %brmerge = or i1 %tobool1, %retval.0.i
anatofuz
parents:
diff changeset
38 br i1 %brmerge, label %if.end6, label %tailrecurse
anatofuz
parents:
diff changeset
39
anatofuz
parents:
diff changeset
40 if.end6:
anatofuz
parents:
diff changeset
41 ret void
anatofuz
parents:
diff changeset
42 }
anatofuz
parents:
diff changeset
43
anatofuz
parents:
diff changeset
44 declare i32 @test3()