@@ -37,3 +37,58 @@ module {
37
37
// CHECK-NEXT: }
38
38
// CHECK-NEXT: return %2 : f32
39
39
// CHECK-NEXT: }
40
+
41
+ // ----
42
+
43
+ module {
44
+ func private @gen () -> (!llvm.ptr <i8 >)
45
+
46
+ func @_Z3runiPPc (%arg2: i1 ) -> !llvm.ptr <i8 > {
47
+ %c1_i64 = arith.constant 1 : i64
48
+ %0 = llvm.alloca %c1_i64 x !llvm.ptr <i8 > : (i64 ) -> !llvm.ptr <ptr <i8 >>
49
+ %2 = llvm.mlir.null : !llvm.ptr <i8 >
50
+ scf.if %arg2 {
51
+ %5 = llvm.load %0 : !llvm.ptr <ptr <i8 >>
52
+ %6 = llvm.icmp " eq" %5 , %2 : !llvm.ptr <i8 >
53
+ %7 = scf.if %6 -> (!llvm.ptr <i8 >) {
54
+ %8 = scf.if %arg2 -> (!llvm.ptr <i8 >) {
55
+ %9 = call @gen () : () -> !llvm.ptr <i8 >
56
+ llvm.store %9 , %0 : !llvm.ptr <ptr <i8 >>
57
+ scf.yield %9 : !llvm.ptr <i8 >
58
+ } else {
59
+ scf.yield %5 : !llvm.ptr <i8 >
60
+ }
61
+ scf.yield %8 : !llvm.ptr <i8 >
62
+ } else {
63
+ scf.yield %5 : !llvm.ptr <i8 >
64
+ }
65
+ }
66
+ %4 = llvm.load %0 : !llvm.ptr <ptr <i8 >>
67
+ return %4 : !llvm.ptr <i8 >
68
+ }
69
+
70
+ }
71
+
72
+ // CHECK: func @_Z3runiPPc(%arg0: i1) -> !llvm.ptr<i8> {
73
+ // CHECK-NEXT: %c1_i64 = arith.constant 1 : i64
74
+ // CHECK-NEXT: %0 = llvm.alloca %c1_i64 x !llvm.ptr<i8> : (i64) -> !llvm.ptr<ptr<i8>>
75
+ // CHECK-NEXT: %1 = llvm.mlir.null : !llvm.ptr<i8>
76
+ // CHECK-NEXT: scf.if %arg0 {
77
+ // CHECK-NEXT: %3 = llvm.load %0 : !llvm.ptr<ptr<i8>>
78
+ // CHECK-NEXT: %4 = llvm.icmp "eq" %3, %1 : !llvm.ptr<i8>
79
+ // CHECK-NEXT: %5 = scf.if %4 -> (!llvm.ptr<i8>) {
80
+ // CHECK-NEXT: %6 = scf.if %arg0 -> (!llvm.ptr<i8>) {
81
+ // CHECK-NEXT: %7 = call @gen() : () -> !llvm.ptr<i8>
82
+ // CHECK-NEXT: llvm.store %7, %0 : !llvm.ptr<ptr<i8>>
83
+ // CHECK-NEXT: scf.yield %7 : !llvm.ptr<i8>
84
+ // CHECK-NEXT: } else {
85
+ // CHECK-NEXT: scf.yield %3 : !llvm.ptr<i8>
86
+ // CHECK-NEXT: }
87
+ // CHECK-NEXT: scf.yield %6 : !llvm.ptr<i8>
88
+ // CHECK-NEXT: } else {
89
+ // CHECK-NEXT: scf.yield %3 : !llvm.ptr<i8>
90
+ // CHECK-NEXT: }
91
+ // CHECK-NEXT: }
92
+ // CHECK-NEXT: %2 = llvm.load %0 : !llvm.ptr<ptr<i8>>
93
+ // CHECK-NEXT: return %2 : !llvm.ptr<i8>
94
+
0 commit comments