Mercurial > hg > CbC > CbC_llvm
comparison polly/test/CodeGen/aliasing_struct_element.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 |
---|---|
8 ; type of S (struct st *) or something else. | 8 ; type of S (struct st *) or something else. |
9 ; | 9 ; |
10 ; Verify that we do not use the offset 1423 into a non existent S array when we | 10 ; Verify that we do not use the offset 1423 into a non existent S array when we |
11 ; compute runtime alias checks but treat it as if it was a char array. | 11 ; compute runtime alias checks but treat it as if it was a char array. |
12 ; | 12 ; |
13 ; CHECK: %polly.access.cast.S = bitcast %struct.st* %S to i8* | 13 ; CHECK: %polly.access.S = getelementptr i8, ptr %S, i64 1424 |
14 ; CHECK: %polly.access.S = getelementptr i8, i8* %polly.access.cast.S, i64 1424 | |
15 ; | 14 ; |
16 ; struct st { | 15 ; struct st { |
17 ; int Dummy[100]; | 16 ; int Dummy[100]; |
18 ; char B[100]; | 17 ; char B[100]; |
19 ; }; | 18 ; }; |
25 ; | 24 ; |
26 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" | 25 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" |
27 | 26 |
28 %struct.st = type { [100 x i32], [100 x i8] } | 27 %struct.st = type { [100 x i32], [100 x i8] } |
29 | 28 |
30 define void @jd(i32* %A, %struct.st* %S) { | 29 define void @jd(ptr %A, ptr %S) { |
31 entry: | 30 entry: |
32 br label %for.cond | 31 br label %for.cond |
33 | 32 |
34 for.cond: ; preds = %for.inc, %entry | 33 for.cond: ; preds = %for.inc, %entry |
35 %indvars.iv = phi i64 [ %indvars.iv.next, %for.inc ], [ 0, %entry ] | 34 %indvars.iv = phi i64 [ %indvars.iv.next, %for.inc ], [ 0, %entry ] |
36 %exitcond = icmp ne i64 %indvars.iv, 1024 | 35 %exitcond = icmp ne i64 %indvars.iv, 1024 |
37 br i1 %exitcond, label %for.body, label %for.end | 36 br i1 %exitcond, label %for.body, label %for.end |
38 | 37 |
39 for.body: ; preds = %for.cond | 38 for.body: ; preds = %for.cond |
40 %arrayidx = getelementptr inbounds %struct.st, %struct.st* %S, i64 0, i32 1, i64 %indvars.iv | 39 %arrayidx = getelementptr inbounds %struct.st, ptr %S, i64 0, i32 1, i64 %indvars.iv |
41 %tmp = load i8, i8* %arrayidx, align 1 | 40 %tmp = load i8, ptr %arrayidx, align 1 |
42 %conv = sext i8 %tmp to i32 | 41 %conv = sext i8 %tmp to i32 |
43 %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv | 42 %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv |
44 store i32 %conv, i32* %arrayidx2, align 4 | 43 store i32 %conv, ptr %arrayidx2, align 4 |
45 br label %for.inc | 44 br label %for.inc |
46 | 45 |
47 for.inc: ; preds = %for.body | 46 for.inc: ; preds = %for.body |
48 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 | 47 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 |
49 br label %for.cond | 48 br label %for.cond |