brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · 00341e4 Raw
60 lines · c
1// RUN: %clang_cc1 -x c %s -triple x86_64-linux-gnu -emit-llvm -o - | FileCheck %s2// RUN: %clang_cc1 -x c %s -triple x86_64-linux-gnu -emit-llvm -fno-builtin -o - | FileCheck %s3// RUN: %clang_cc1 -x c++ %s -triple x86_64-linux-gnu -emit-llvm -o - | FileCheck %s4 5#ifdef __cplusplus6extern "C" {7#endif8 9struct __jmp_buf_tag { int n; };10struct __ucontext_t_tag { int n; };11int setjmp(struct __jmp_buf_tag*);12int sigsetjmp(struct __jmp_buf_tag*, int);13int _setjmp(struct __jmp_buf_tag*);14int __sigsetjmp(struct __jmp_buf_tag*, int);15int _setjmpex(struct __jmp_buf_tag* env);16int getcontext(struct __ucontext_t_tag*);17 18typedef struct __jmp_buf_tag jmp_buf[1];19typedef struct __jmp_buf_tag sigjmp_buf[1];20typedef struct __ucontext_t_tag ucontext_t[1];21 22#ifdef __cplusplus23}24#endif25 26void f(void) {27  jmp_buf jb;28  ucontext_t ut;29  // CHECK: call {{.*}}@setjmp(30  setjmp(jb);31  // CHECK: call {{.*}}@sigsetjmp(32  sigsetjmp(jb, 0);33  // CHECK: call {{.*}}@_setjmp(34  _setjmp(jb);35  // CHECK: call {{.*}}@__sigsetjmp(36  __sigsetjmp(jb, 0);37  // CHECK: call {{.*}}@_setjmpex(38  _setjmpex(jb);39  // CHECK: call {{.*}}@getcontext(40  getcontext(ut);41}42 43// CHECK: ; Function Attrs: returns_twice44// CHECK-NEXT: declare {{.*}} @setjmp(45 46// CHECK: ; Function Attrs: returns_twice47// CHECK-NEXT: declare {{.*}} @sigsetjmp(48 49// CHECK: ; Function Attrs: returns_twice50// CHECK-NEXT: declare {{.*}} @_setjmp(51 52// CHECK: ; Function Attrs: returns_twice53// CHECK-NEXT: declare {{.*}} @__sigsetjmp(54 55// CHECK: ; Function Attrs: returns_twice56// CHECK-NEXT: declare {{.*}} @_setjmpex(57 58// CHECK: ; Function Attrs: returns_twice59// CHECK-NEXT: declare {{.*}} @getcontext(60