207
|
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
|
|
3
|
|
4 #ifdef __cplusplus
|
|
5 extern "C" {
|
|
6 #endif
|
|
7
|
|
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);
|
|
13
|
|
14 typedef struct __jmp_buf_tag jmp_buf[1];
|
|
15 typedef struct __jmp_buf_tag sigjmp_buf[1];
|
|
16
|
|
17 #ifdef __cplusplus
|
|
18 }
|
|
19 #endif
|
|
20
|
|
21 void f() {
|
|
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);
|
|
31 }
|
|
32
|
|
33 // CHECK: ; Function Attrs: returns_twice
|
|
34 // CHECK-NEXT: declare {{.*}} @setjmp(
|
|
35
|
|
36 // CHECK: ; Function Attrs: returns_twice
|
|
37 // CHECK-NEXT: declare {{.*}} @sigsetjmp(
|
|
38
|
|
39 // CHECK: ; Function Attrs: returns_twice
|
|
40 // CHECK-NEXT: declare {{.*}} @_setjmp(
|
|
41
|
|
42 // CHECK: ; Function Attrs: returns_twice
|
|
43 // CHECK-NEXT: declare {{.*}} @__sigsetjmp(
|
|
44
|