[clang] Handle __declspec() attributes in using
[llvm-project.git] / clang / test / CodeGen / setjmp.c
blob77dde35e69caedb4190fb5c26163442c07fcc205
1 // RUN: %clang_cc1 -x c %s -triple x86_64-linux-gnu -emit-llvm -o - | FileCheck %s
2 // RUN: %clang_cc1 -x c++ %s -triple x86_64-linux-gnu -emit-llvm -o - | FileCheck %s
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
8 struct __jmp_buf_tag { int n; };
9 int setjmp(struct __jmp_buf_tag*);
10 int sigsetjmp(struct __jmp_buf_tag*, int);
11 int _setjmp(struct __jmp_buf_tag*);
12 int __sigsetjmp(struct __jmp_buf_tag*, int);
14 typedef struct __jmp_buf_tag jmp_buf[1];
15 typedef struct __jmp_buf_tag sigjmp_buf[1];
17 #ifdef __cplusplus
19 #endif
21 void f(void) {
22 jmp_buf jb;
23 // CHECK: call {{.*}}@setjmp(
24 setjmp(jb);
25 // CHECK: call {{.*}}@sigsetjmp(
26 sigsetjmp(jb, 0);
27 // CHECK: call {{.*}}@_setjmp(
28 _setjmp(jb);
29 // CHECK: call {{.*}}@__sigsetjmp(
30 __sigsetjmp(jb, 0);
33 // CHECK: ; Function Attrs: returns_twice
34 // CHECK-NEXT: declare {{.*}} @setjmp(
36 // CHECK: ; Function Attrs: returns_twice
37 // CHECK-NEXT: declare {{.*}} @sigsetjmp(
39 // CHECK: ; Function Attrs: returns_twice
40 // CHECK-NEXT: declare {{.*}} @_setjmp(
42 // CHECK: ; Function Attrs: returns_twice
43 // CHECK-NEXT: declare {{.*}} @__sigsetjmp(