Skip to content

Commit 170c4f6

Browse files
GARRYHUpawosm-arm
authored andcommitted
[test]add testcases for align pragma with scalar data types
1 parent 356c542 commit 170c4f6

File tree

6 files changed

+210
-0
lines changed

6 files changed

+210
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
! RUN: %flang -O0 -S -emit-llvm %s -o - | FileCheck %s
2+
3+
! CHECK: %struct.[[BLOCK1:STATICS[0-9]+]] = type <{ [132 x i8] }>
4+
! CHECK: @.[[BLOCK1]] = internal global %struct.[[BLOCK1]] <{ [132 x i8] {{[^,]+}} }>, align 128
5+
integer(kind=4) function function_init()
6+
!dir$ align 128
7+
integer(kind=4) :: a128 = 10
8+
!dir$ align 128
9+
integer(kind=4) :: b128 = 20
10+
! CHECK: {{[^g]+}}getelementptr {{[^,]+}}, {{[^,]+}}, i64 128
11+
a128 = a128 + 1
12+
! CHECK: {{[^g]+}}getelementptr {{[^,]+}}, {{[^,]+}}, i64 128
13+
b128 = b128 + 2
14+
! CHECK: {{[^g]+}}getelementptr {{[^,]+}}, {{[^,]+}}, i64 128
15+
function_init = a128 + b128
16+
end function function_init
17+
18+
19+
integer(kind=4) function function_no_init()
20+
! CHECK: {{[^=]+}} = alloca i32, align 128
21+
!dir$ align 128
22+
integer(kind=4) :: a128
23+
! CHECK: {{[^=]+}} = alloca i32, align 128
24+
!dir$ align 128
25+
integer(kind=4) :: b128
26+
27+
a128 = 1
28+
b128 = 2
29+
30+
function_no_init = a128 + b128
31+
end function function_no_init
32+
33+
34+
program MainProgram
35+
implicit none
36+
37+
38+
integer(kind=4) :: res
39+
integer(kind=4) :: function_init
40+
integer(kind=4) :: function_no_init
41+
42+
res = function_init()
43+
res = function_no_init()
44+
45+
end program MainProgram
46+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
! RUN: %flang -O0 -S -emit-llvm %s -o - | FileCheck %s
2+
! CHECK: %struct.[[BLOCK1:STATICS[0-9]+]] = type <{ [1028 x i8] }>
3+
! CHECK: @.[[BLOCK1]] = internal global %struct.[[BLOCK1]] <{ [1028 x i8] {{[^,]+}} }>, align 1024
4+
program MainProgram
5+
implicit none
6+
! CHECK: {{[^g]+}}getelementptr {{[^,]+}}, {{[^,]+}}, i64 1024
7+
! CHECK: {{[^g]+}}getelementptr {{[^,]+}}, {{[^,]+}}, i64 1024
8+
!dir$ align 1024
9+
integer(kind=4) :: a1024 =30
10+
!dir$ align 1024
11+
integer(kind=4) :: b1024 =40
12+
a1024 = a1024 + b1024
13+
14+
end program MainProgram
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
! RUN: %flang -O0 -S -emit-llvm %s -o - | FileCheck %s
2+
program main
3+
implicit none
4+
! CHECK: {{[^=]+}} = alloca i64, align 256
5+
! CHECK: {{[^=]+}} = alloca i64, align 256
6+
7+
!dir$ align 256
8+
integer(kind=8) :: d,e
9+
10+
d=e
11+
12+
end program main
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
! RUN: %flang -O0 -S -emit-llvm %s -o - | FileCheck %s
2+
3+
! CHECK: %struct.[[BLOCK1:STATICS[0-9]+]] = type <{ [260 x i8] }>
4+
! CHECK: %struct[[STRUCT1:[^=]+]] = type <{ [516 x i8] }>
5+
6+
! CHECK: @.[[BLOCK1]] = internal global %struct.[[BLOCK1]] <{ [260 x i8] {{[^,]+}} }>, align 256
7+
! CHECK: @[[STRUCT1]] = global %struct[[STRUCT1]] <{ [516 x i8] {{[^,]+}} }>, align 512
8+
module module_align
9+
implicit none
10+
11+
!dir$ align 128
12+
integer :: a128 = 123
13+
14+
!dir$ align 512
15+
integer :: b512 = 234
16+
17+
interface
18+
module subroutine module_interface_subroutine()
19+
end subroutine module_interface_subroutine
20+
end interface
21+
22+
end module module_align
23+
24+
submodule (module_align) submodule_align
25+
26+
contains
27+
module subroutine module_interface_subroutine()
28+
29+
30+
!dir$ align 256
31+
integer :: a256 = 12
32+
33+
!dir$ align 128
34+
integer :: b128 = 14
35+
36+
! CHECK: {{[^g]+}}getelementptr {{[^,]+}}, {{[^,]+}}, i64 256
37+
! CHECK: {{[^g]+}}getelementptr {{[^,]+}}, {{[^,]+}}, i64 512
38+
a128 = 12 + a256
39+
b512 = 23 + b128
40+
41+
42+
end subroutine module_interface_subroutine
43+
end submodule submodule_align
44+
45+
program MainProgram
46+
47+
use module_align
48+
call module_interface_subroutine()
49+
50+
end program MainProgram
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
! RUN: %flang -O0 -S -emit-llvm %s -o - | FileCheck %s
2+
! CHECK: %struct[[STRUCT1:[^=]+]] = type <{ [2052 x i8] }>
3+
! CHECK: @[[STRUCT1]] = common global %struct[[STRUCT1]] zeroinitializer, align 1024
4+
module MyModule
5+
implicit none
6+
7+
!dir$ align 512
8+
integer(kind=4) :: a512
9+
!dir$ align 512
10+
integer(kind=4) :: b512
11+
!dir$ align 512
12+
integer, dimension (5,5) :: c
13+
14+
!dir$ align 128
15+
integer(kind=4) :: d128
16+
17+
integer(kind=4) :: e4
18+
19+
!dir$ align 1024
20+
integer(kind=4) :: f1024
21+
22+
interface
23+
module subroutine module_interface_subroutine()
24+
end subroutine module_interface_subroutine
25+
end interface
26+
27+
end module MyModule
28+
29+
submodule (MyModule) submodule_align
30+
31+
contains
32+
module subroutine module_interface_subroutine()
33+
34+
a512 = 11
35+
! CHECK: {{[^g]+}}getelementptr {{[^,]+}}, {{[^,]+}}, i64 512
36+
b512 = 12
37+
! CHECK: {{[^g]+}}getelementptr {{[^,]+}}, {{[^,]+}}, i64 1072
38+
c(3, 3) = 13
39+
! CHECK: {{[^g]+}}getelementptr {{[^,]+}}, {{[^,]+}}, i64 1152
40+
d128 = 14
41+
! CHECK: {{[^g]+}}getelementptr {{[^,]+}}, {{[^,]+}}, i64 1156
42+
e4 = 15
43+
! CHECK: {{[^g]+}}getelementptr {{[^,]+}}, {{[^,]+}}, i64 2048
44+
f1024 = 16
45+
end subroutine module_interface_subroutine
46+
end submodule submodule_align
47+
48+
49+
program MainProgram
50+
use MyModule
51+
call module_interface_subroutine()
52+
end program MainProgram
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
! RUN: %flang -O0 -S -emit-llvm %s -o - | FileCheck %s
2+
3+
program MainProgram
4+
implicit none
5+
6+
call subroutine_init()
7+
call subroutine_no_init()
8+
9+
end program MainProgram
10+
11+
12+
! CHECK: %struct.[[BLOCK1:STATICS[0-9]+]] = type <{ [2052 x i8] }>
13+
! CHECK: @.[[BLOCK1]] = internal global %struct.[[BLOCK1]] <{ [2052 x i8] {{[^,]+}} }>, align 2048
14+
subroutine subroutine_init()
15+
!dir$ align 2048
16+
integer(kind=4) :: a2048 = 10
17+
!dir$ align 2048
18+
integer(kind=4) :: b2048 = 20
19+
! CHECK: {{[^g]+}}getelementptr {{[^,]+}}, {{[^,]+}}, i64 2048
20+
! CHECK: {{[^g]+}}getelementptr {{[^,]+}}, {{[^,]+}}, i64 2048
21+
a2048 = a2048 + 1
22+
b2048 = b2048 + 2
23+
24+
end subroutine subroutine_init
25+
26+
subroutine subroutine_no_init()
27+
! CHECK: {{[^=]+}} = alloca i32, align 1024
28+
!dir$ align 1024
29+
integer(kind=4) :: a1024
30+
! CHECK: {{[^=]+}} = alloca i32, align 1024
31+
!dir$ align 1024
32+
integer(kind=4) :: b1024
33+
a1024 = 1
34+
b1024 = 2
35+
36+
end subroutine subroutine_no_init

0 commit comments

Comments
 (0)