File tree Expand file tree Collapse file tree 2 files changed +29
-0
lines changed Expand file tree Collapse file tree 2 files changed +29
-0
lines changed Original file line number Diff line number Diff line change @@ -23,6 +23,15 @@ module {
23
23
%0 = cir.eh.setjmp %arg0 : (!p32) -> !s32i
24
24
cir.return %0 : !s32i
25
25
}
26
+ cir.func @test_longjmp(%arg0 : !p32) {
27
+
28
+ // MLIR: llvm.func @test_longjmp([[ARG0:%.*]]: !llvm.ptr)
29
+ // MLIR-NEXT: llvm.call_intrinsic "llvm.eh.sjlj.longjmp"([[ARG0]]) : (!llvm.ptr) -> ()
30
+ // MLIR-NEXT: llvm.unreachable
31
+ // MLIR-NEXT: }
32
+ cir.eh.longjmp %arg0 : (!p32) -> ()
33
+ cir.unreachable
34
+ }
26
35
// MLIR: }
27
36
}
28
37
Original file line number Diff line number Diff line change @@ -52,3 +52,23 @@ void test_setjmp2(void *env) {
52
52
// AFTER-LOWERING-PREPARE-NEXT: cir.eh.setjmp [[CAST]] : (!cir.ptr<!cir.ptr<!void>>) -> !s32i
53
53
_setjmp (env );
54
54
}
55
+ void test_longjmp (void * env ) {
56
+ // BEFORE-LOWERING-PREPARE-LABEL: test_longjmp
57
+ // BEFORE-LOWERING-PREPARE-SAME: [[ENV:%.*]]:
58
+ // BEFORE-LOWERING-PREPARE-NEXT: [[ENV_ALLOCA:%.*]] = cir.alloca
59
+ // BEFORE-LOWERING-PREPARE-NEXT: cir.store [[ENV]], [[ENV_ALLOCA]]
60
+ // BEFORE-LOWERING-PREPARE-NEXT: [[ENV_LOAD:%.*]] = cir.load align(8) [[ENV_ALLOCA]]
61
+ // BEFORE-LOWERING-PREPARE-NEXT: [[CAST:%.*]] = cir.cast(bitcast, [[ENV_LOAD]]
62
+ // BEFORE-LOWERING-PREPARE-NEXT: cir.eh.longjmp [[CAST]] : (!cir.ptr<!cir.ptr<!void>>) -> ()
63
+ // BEFORE-LOWERING-PREPARE-NEXT: cir.unreachable
64
+
65
+ // AFTER-LOWERING-PREPARE-LABEL: test_longjmp
66
+ // AFTER-LOWERING-PREPARE-SAME: [[ENV:%.*]]:
67
+ // AFTER-LOWERING-PREPARE-NEXT: [[ENV_ALLOCA:%.*]] = cir.alloca
68
+ // AFTER-LOWERING-PREPARE-NEXT: cir.store [[ENV]], [[ENV_ALLOCA]]
69
+ // AFTER-LOWERING-PREPARE-NEXT: [[ENV_LOAD:%.*]] = cir.load align(8) [[ENV_ALLOCA]]
70
+ // AFTER-LOWERING-PREPARE-NEXT: [[CAST:%.*]] = cir.cast(bitcast, [[ENV_LOAD]]
71
+ // AFTER-LOWERING-PREPARE-NEXT: cir.eh.longjmp [[CAST]] : (!cir.ptr<!cir.ptr<!void>>)
72
+ // AFTER-LOWERING-PREPARE-NEXT: cir.unreachable
73
+ __builtin_longjmp (env , 1 );
74
+ }
You can’t perform that action at this time.
0 commit comments