Skip to content

Commit 0b3c462

Browse files
committed
[CIR] added codegen test for CIR longjmp op
1 parent 31dd4c7 commit 0b3c462

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

clang/test/CIR/CodeGen/builtin-setjmp-longjmp.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,26 @@ void test_setjmp2(void *env) {
6161
// OGCG: call i32 @_setjmp(ptr noundef [[ENV]])
6262
_setjmp (env);
6363
}
64+
65+
void test_longjmp(void *env) {
66+
// CIR-LABEL: test_longjmp
67+
// CIR-SAME: [[ENV:%.*]]:
68+
// CIR-NEXT: [[ENV_ALLOCA:%[0-9]+]] = cir.alloca !cir.ptr<!void>, !cir.ptr<!cir.ptr<!void>>,
69+
// CIR-NEXT: cir.store [[ENV]], [[ENV_ALLOCA]] : !cir.ptr<!void>, !cir.ptr<!cir.ptr<!void>>
70+
// CIR-NEXT: [[ENV_LOAD:%[0-9]+]] = cir.load align(8) [[ENV_ALLOCA]]
71+
// CIR-NEXT: [[CAST:%[0-9]+]] = cir.cast(bitcast, [[ENV_LOAD]] : !cir.ptr<!void>), !cir.ptr<!cir.ptr<!void>>
72+
// CIR-NEXT: cir.eh.longjmp [[CAST]] : (!cir.ptr<!cir.ptr<!void>>) -> ()
73+
// CIR-NEXT: cir.unreachable
74+
75+
76+
// LLVM-LABEL: test_longjmp
77+
// LLVM-SAME: (ptr{{.*}}[[ENV:%.*]])
78+
// LLVM-NEXT: @llvm.eh.sjlj.longjmp(ptr{{.*}}[[ENV]])
79+
// LLVM-NEXT: unreachable
80+
81+
// OGCG-LABEL: test_longjmp
82+
// OGCG-SAME: (ptr{{.*}}[[ENV:%.*]])
83+
// OGCG: @llvm.eh.sjlj.longjmp(ptr{{.*}}[[ENV]])
84+
// OGCG-NEXT: unreachable
85+
__builtin_longjmp(env, 1);
86+
}

0 commit comments

Comments
 (0)