Mercurial > hg > CbC > CbC_llvm
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 |