@@ -11,31 +11,52 @@ void foo(int n) {
1111 {}
1212}
1313
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
3362
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