Skip to content

Commit 636566e

Browse files
committed
Add test
1 parent 63c7fe3 commit 636566e

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// RUN: tco %s | FileCheck %s
2+
3+
// the fir.embox in the init region is turned into an alloca for the box. Test
4+
// that CodeGen.cpp knows where to place an alloca when it is inside of an
5+
// omp.reduction.declare
6+
7+
// regretably this has to be nonsense IR because we need the subsequent patches
8+
// to process anything useful
9+
10+
omp.reduction.declare @test_reduction : !fir.ref<!fir.box<i32>> init {
11+
^bb0(%arg0: !fir.ref<!fir.box<i32>>):
12+
%0 = fir.alloca !fir.box<i32>
13+
%1 = fir.alloca i32
14+
%2 = fir.embox %1 : (!fir.ref<i32>) -> !fir.box<i32>
15+
16+
// use the embox for something so it isn't removed
17+
fir.store %2 to %0 : !fir.ref<!fir.box<i32>>
18+
19+
omp.yield(%0 : !fir.ref<!fir.box<i32>>)
20+
} combiner {
21+
^bb0(%arg0: !fir.ref<!fir.box<i32>>, %arg1: !fir.ref<!fir.box<i32>>):
22+
%0 = fir.undefined !fir.ref<!fir.box<i32>>
23+
omp.yield(%0 : !fir.ref<!fir.box<i32>>)
24+
}
25+
26+
func.func @_QQmain() attributes {fir.bindc_name = "reduce"} {
27+
%4 = fir.alloca !fir.box<i32>
28+
omp.parallel byref reduction(@test_reduction %4 -> %arg0 : !fir.ref<!fir.box<i32>>) {
29+
omp.terminator
30+
}
31+
return
32+
}
33+
34+
// basically we are testing that there isn't a crash
35+
// CHECK-LABEL: define void @_QQmain
36+
// CHECK-NEXT: alloca { ptr, i64, i32, i8, i8, i8, i8 }, i64 1, align 8

0 commit comments

Comments
 (0)