comparison polly/test/CodeGen/non-hoisted-load-needed-as-base-ptr.ll @ 252:1f2b6ac9f198 llvm-original

LLVM16-1
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 18 Aug 2023 09:04:13 +0900
parents c4bab56944e8
children
comparison
equal deleted inserted replaced
237:c80f45b162ad 252:1f2b6ac9f198
1 ; RUN: opt %loadPolly -tbaa -polly-codegen -disable-output %s 1 ; RUN: opt %loadPolly -tbaa -polly-codegen -disable-output %s
2 ; 2 ;
3 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 3 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
4 4
5 %struct.1 = type { %struct.2*, %struct.2*, %struct.3*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8*, i8*, i8*, i8*, i8*, i32, [38 x i8], [128 x i8], [38 x i32], [256 x i8], [256 x i8], [256 x i8], %struct.4, [25 x [16 x %struct.4]], [128 x [64 x i16]] } 5 %struct.1 = type { ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, i32, [38 x i8], [128 x i8], [38 x i32], [256 x i8], [256 x i8], [256 x i8], %struct.4, [25 x [16 x %struct.4]], [128 x [64 x i16]] }
6 %struct.2 = type { i16, i16, i32, i32 } 6 %struct.2 = type { i16, i16, i32, i32 }
7 %struct.3 = type { i8, i8, i16, i16 } 7 %struct.3 = type { i8, i8, i16, i16 }
8 %struct.4 = type { i16, i8, i8 } 8 %struct.4 = type { i16, i8, i8 }
9 9
10 define void @AllocUnitsRare(%struct.1* %p, i32 %indx) { 10 define void @AllocUnitsRare(ptr %p, i32 %indx) {
11 entry: 11 entry:
12 br label %do.body 12 br label %do.body
13 13
14 do.body: ; preds = %do.body, %entry 14 do.body: ; preds = %do.body, %entry
15 %i.0 = phi i32 [ %inc, %do.body ], [ %indx, %entry ] 15 %i.0 = phi i32 [ %inc, %do.body ], [ %indx, %entry ]
16 %inc = add i32 %i.0, 1 16 %inc = add i32 %i.0, 1
17 br i1 undef, label %do.body, label %do.end 17 br i1 undef, label %do.body, label %do.end
18 18
19 do.end: ; preds = %do.body 19 do.end: ; preds = %do.body
20 %Base.i = getelementptr inbounds %struct.1, %struct.1* %p, i32 0, i32 12 20 %Base.i = getelementptr inbounds %struct.1, ptr %p, i32 0, i32 12
21 %tmp.i = load i8*, i8** %Base.i, align 8, !tbaa !0 21 %tmp.i = load ptr, ptr %Base.i, align 8, !tbaa !0
22 %idxprom.i = zext i32 %inc to i64 22 %idxprom.i = zext i32 %inc to i64
23 %FreeList.i = getelementptr inbounds %struct.1, %struct.1* %p, i32 0, i32 20 23 %FreeList.i = getelementptr inbounds %struct.1, ptr %p, i32 0, i32 20
24 %arrayidx.i = getelementptr inbounds [38 x i32], [38 x i32]* %FreeList.i, i64 0, i64 %idxprom.i 24 %arrayidx.i = getelementptr inbounds [38 x i32], ptr %FreeList.i, i64 0, i64 %idxprom.i
25 %tmp1.i = bitcast i8* %tmp.i to i32* 25 %tmp2.i = load i32, ptr %tmp.i, align 4, !tbaa !8
26 %tmp2.i = load i32, i32* %tmp1.i, align 4, !tbaa !8 26 store i32 %tmp2.i, ptr %arrayidx.i, align 4, !tbaa !8
27 store i32 %tmp2.i, i32* %arrayidx.i, align 4, !tbaa !8 27 %Indx2Units.i = getelementptr inbounds %struct.1, ptr %p, i32 0, i32 18
28 %Indx2Units.i = getelementptr inbounds %struct.1, %struct.1* %p, i32 0, i32 18
29 %arrayidx.i1 = getelementptr inbounds [38 x i8], [38 x i8]* %Indx2Units.i, i64 0, i64 0
30 %cmp.i = icmp ne i32 0, 3 28 %cmp.i = icmp ne i32 0, 3
31 br i1 %cmp.i, label %if.then.i, label %SplitBlock.exit 29 br i1 %cmp.i, label %if.then.i, label %SplitBlock.exit
32 30
33 if.then.i: ; preds = %do.end 31 if.then.i: ; preds = %do.end
34 br label %SplitBlock.exit 32 br label %SplitBlock.exit