annotate llvm/test/Transforms/CodeGenPrepare/X86/split-indirect-loop.ll @ 173:0572611fdcc8 llvm10 llvm12

reorgnization done
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 11:55:54 +0900
parents 1d019706d866
children 1f2b6ac9f198
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 ; RUN: opt -codegenprepare -S -mtriple=x86_64 < %s | FileCheck %s
anatofuz
parents:
diff changeset
2
anatofuz
parents:
diff changeset
3 ; Test that an invalid CFG is not created by splitIndirectCriticalEdges
anatofuz
parents:
diff changeset
4 ; transformation when the 'target' block is a loop to itself.
anatofuz
parents:
diff changeset
5
anatofuz
parents:
diff changeset
6 ; CHECK: .split:
anatofuz
parents:
diff changeset
7 ; CHECK: br label %while.body.clone
anatofuz
parents:
diff changeset
8 ; CHECK: if.else1:
anatofuz
parents:
diff changeset
9 ; CHECK: indirectbr
anatofuz
parents:
diff changeset
10 ; CHECK: while.body.clone:
anatofuz
parents:
diff changeset
11 ; CHECK: br label %.split
anatofuz
parents:
diff changeset
12
anatofuz
parents:
diff changeset
13 define void @test() {
anatofuz
parents:
diff changeset
14 entry:
anatofuz
parents:
diff changeset
15 br label %if.else
anatofuz
parents:
diff changeset
16
anatofuz
parents:
diff changeset
17 if.else:
anatofuz
parents:
diff changeset
18 br i1 undef, label %while.body, label %preheader
anatofuz
parents:
diff changeset
19
anatofuz
parents:
diff changeset
20 preheader:
anatofuz
parents:
diff changeset
21 br label %if.else1
anatofuz
parents:
diff changeset
22
anatofuz
parents:
diff changeset
23 if.then:
anatofuz
parents:
diff changeset
24 unreachable
anatofuz
parents:
diff changeset
25
anatofuz
parents:
diff changeset
26 while.body:
anatofuz
parents:
diff changeset
27 %dest.sroa = phi i32 [ %1, %while.body ], [ undef, %if.else1 ], [ undef, %if.else ]
anatofuz
parents:
diff changeset
28 %0 = inttoptr i32 %dest.sroa to i8*
anatofuz
parents:
diff changeset
29 %incdec.ptr = getelementptr inbounds i8, i8* %0, i32 -1
anatofuz
parents:
diff changeset
30 %1 = ptrtoint i8* %incdec.ptr to i32
anatofuz
parents:
diff changeset
31 store i8 undef, i8* %incdec.ptr, align 1
anatofuz
parents:
diff changeset
32 br label %while.body
anatofuz
parents:
diff changeset
33
anatofuz
parents:
diff changeset
34 if.else1:
anatofuz
parents:
diff changeset
35 indirectbr i8* undef, [label %if.then, label %while.body, label %if.else, label %if.else1]
anatofuz
parents:
diff changeset
36 }
anatofuz
parents:
diff changeset
37