@@ -11,31 +11,52 @@ void foo(int n) {
11
11
{}
12
12
}
13
13
14
- // CHECK: %7 = load i32, i32* %n.addr, align 4
15
- // CHECK-NEXT: %8 = sext i32 %7 to i64
16
- // CHECK-NEXT: %9 = load i32, i32* %n.addr, align 4
17
- // CHECK-NEXT: %add1 = add nsw i32 %9, 1
18
- // CHECK-NEXT: %10 = sext i32 %add1 to i64
19
- // CHECK-NEXT: %11 = load i32, i32* %i, align 4
20
- // CHECK-NEXT: %add2 = add nsw i32 %11, 1
21
- // CHECK-NEXT: %12 = sext i32 %add2 to i64
22
- // CHECK-NEXT: %13 = add i64 %12, 1
23
- // CHECK-NEXT: %14 = load i32, i32* %i, align 4
24
- // CHECK-NEXT: %15 = sext i32 %14 to i64
25
- // CHECK-NEXT: %16 = add i64 %15, 1
26
- // CHECK-NEXT: %17 = load i32, i32* %n.addr, align 4
27
- // CHECK-NEXT: %add3 = add nsw i32 %17, 1
28
- // CHECK-NEXT: %18 = sext i32 %add3 to i64
29
- // CHECK-NEXT: %19 = load i32, i32* %n.addr, align 4
30
- // CHECK-NEXT: %add4 = add nsw i32 %19, 1
31
- // CHECK-NEXT: %20 = sext i32 %add4 to i64
32
- // CHECK-NEXT: %21 = call token @llvm.directive.region.entry() [ "DIR.OSS"([5 x i8] c"TASK\00"), "QUAL.OSS.SHARED.VLA"([7 x i32]* %vla, i64 %8, i64 7, i64 %10, i64 7), "QUAL.OSS.FIRSTPRIVATE"(i32* %i), "QUAL.OSS.DEP.IN"([7 x i32]* %vla, i64 28, i64 0, i64 28, i64 %18, i64 0, i64 %18, i64 7, i64 %12, i64 %13, i64 1, i64 %15, i64 %16), "QUAL.OSS.DEP.IN"([7 x i32]* %vla, i64 28, i64 0, i64 28, i64 %20, i64 0, i64 %20, i64 7, i64 0, i64 7) ]
14
+ // CHECK store i64 %1, i64* %__vla_expr0, align 8
15
+ // CHECK-NEXT store i64 %3, i64* %__vla_expr1, align 8
16
+ // CHECK-NEXT %7 = load i32, i32* %i, align 4
17
+ // CHECK-NEXT %add1 = add nsw i32 %7, 1
18
+ // CHECK-NEXT %8 = sext i32 %add1 to i64
19
+ // CHECK-NEXT %9 = add i64 %8, 1
20
+ // CHECK-NEXT %10 = load i32, i32* %i, align 4
21
+ // CHECK-NEXT %11 = sext i32 %10 to i64
22
+ // CHECK-NEXT %12 = add i64 %11, 1
23
+ // CHECK-NEXT %13 = call token @llvm.directive.region.entry() [ "DIR.OSS"([5 x i8] c"TASK\00"), "QUAL.OSS.SHARED.VLA"([7 x i32]* %vla, i64 %1, i64 7, i64 %3, i64 7), "QUAL.OSS.FIRSTPRIVATE"(i32* %i), "QUAL.OSS.DEP.IN"([7 x i32]* %vla, i64 28, i64 0, i64 28, i64 %3, i64 0, i64 %3, i64 7, i64 %8, i64 %9, i64 1, i64 %11, i64 %12), "QUAL.OSS.DEP.IN"([7 x i32]* %vla, i64 28, i64 0, i64 28, i64 %3, i64 0, i64 %3, i64 7, i64 0, i64 7) ]
24
+ // CHECK-NEXT call void @llvm.directive.region.exit(token %13)
25
+ // CHECK-NEXT %14 = load i32, i32* %n.addr, align 4
26
+ // CHECK-NEXT %add2 = add nsw i32 %14, 1
27
+ // CHECK-NEXT %15 = zext i32 %add2 to i64
28
+ // CHECK-NEXT %16 = load i32, i32* %n.addr, align 4
29
+ // CHECK-NEXT %add3 = add nsw i32 %16, 1
30
+ // CHECK-NEXT %17 = zext i32 %add3 to i64
31
+ // CHECK-NEXT %18 = load [7 x i32]*, [7 x i32]** %p_array, align 8
32
+ // CHECK-NEXT %19 = call token @llvm.directive.region.entry() [ "DIR.OSS"([5 x i8] c"TASK\00"), "QUAL.OSS.FIRSTPRIVATE"([7 x i32]** %p_array), "QUAL.OSS.DEP.IN"([7 x i32]* %18, i64 28, i64 0, i64 28, i64 %17, i64 0, i64 %17, i64 7, i64 0, i64 7, i64 %15, i64 0, i64 %15, i64 1, i64 0, i64 1) ]
33
+ // CHECK-NEXT call void @llvm.directive.region.exit(token %19)
34
+
35
+ int p ;
36
+ void foo1 (int x ) {
37
+ int y ;
38
+ #pragma oss task
39
+ {
40
+ int vla [x ][7 ][y ][p ];
41
+ }
42
+ #pragma oss task
43
+ {
44
+ int z = x + y + p ;
45
+ }
46
+ }
47
+
48
+ // CHECK: %0 = call token @llvm.directive.region.entry() [ "DIR.OSS"([5 x i8] c"TASK\00"), "QUAL.OSS.SHARED"(i32* @p), "QUAL.OSS.FIRSTPRIVATE"(i32* %x.addr), "QUAL.OSS.FIRSTPRIVATE"(i32* %y) ]
49
+ // CHECK: %12 = call token @llvm.directive.region.entry() [ "DIR.OSS"([5 x i8] c"TASK\00"), "QUAL.OSS.SHARED"(i32* @p), "QUAL.OSS.FIRSTPRIVATE"(i32* %x.addr), "QUAL.OSS.FIRSTPRIVATE"(i32* %y) ]
50
+
51
+ void foo2 (int x ) {
52
+ int y ;
53
+ int array [x + 1 ][y + 1 ];
54
+ #pragma oss task
55
+ { array [0 ][0 ] = 1 ; }
56
+ }
57
+
58
+ // CHECK: store i64 %1, i64* %__vla_expr0, align 8
59
+ // CHECK-NEXT: store i64 %3, i64* %__vla_expr1, align 8
60
+ // CHECK-NEXT: %6 = call token @llvm.directive.region.entry() [ "DIR.OSS"([5 x i8] c"TASK\00"), "QUAL.OSS.FIRSTPRIVATE.VLA"(i32* %vla, i64 %1, i64 %3) ]
61
+ // CHECK-NEXT: %7 = mul nsw i64 0, %3
33
62
34
- // CHECK: %26 = load [7 x i32]*, [7 x i32]** %p_array, align 8
35
- // CHECK-NEXT: %27 = load i32, i32* %n.addr, align 4
36
- // CHECK-NEXT: %add7 = add nsw i32 %27, 1
37
- // CHECK-NEXT: %28 = sext i32 %add7 to i64
38
- // CHECK-NEXT: %29 = load i32, i32* %n.addr, align 4
39
- // CHECK-NEXT: %add8 = add nsw i32 %29, 1
40
- // CHECK-NEXT: %30 = sext i32 %add8 to i64
41
- // CHECK-NEXT: %31 = call token @llvm.directive.region.entry() [ "DIR.OSS"([5 x i8] c"TASK\00"), "QUAL.OSS.FIRSTPRIVATE"([7 x i32]** %p_array), "QUAL.OSS.DEP.IN"([7 x i32]* %26, i64 28, i64 0, i64 28, i64 %30, i64 0, i64 %30, i64 7, i64 0, i64 7, i64 %28, i64 0, i64 %28, i64 1, i64 0, i64 1) ]
0 commit comments