brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 99463cf Raw
36 lines · c
1// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm < %s| FileCheck %s2// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm < %s| FileCheck %s3// RUN: %clang_cc1 -triple x86_64-windows -emit-llvm < %s| FileCheck %s4// RUN: %clang_cc1 -triple powerpc-unknown-unknown -emit-llvm < %s| FileCheck %s5// RUN: %clang_cc1 -triple powerpc64-unknown-unknown -emit-llvm < %s| FileCheck %s6// RUN: %clang_cc1 -triple ve-unknown-unknown -emit-llvm < %s | FileCheck %s7 8// RUN: %clang_cc1 -triple aarch64-unknown-unknown -emit-llvm-only -verify %s9// RUN: %clang_cc1 -triple mips-unknown-unknown -emit-llvm-only -verify %s10// RUN: %clang_cc1 -triple mips64-unknown-unknown -emit-llvm-only -verify %s11// RUN: %clang_cc1 -triple sparc-eabi-unknown -emit-llvm-only -verify %s12 13// Check that __builtin_longjmp and __builtin_setjmp are lowered into14// IR intrinsics on those architectures that can handle them.15// Check that an error is created otherwise.16 17typedef void *jmp_buf;18jmp_buf buf;19 20// CHECK:   define{{.*}} void @do_jump()21// CHECK:   call{{.*}} void @llvm.eh.sjlj.longjmp22 23// CHECK:   define{{.*}} void @do_setjmp()24// CHECK:   call{{.*}} i32 @llvm.eh.sjlj.setjmp25 26void do_jump(void) {27  __builtin_longjmp(buf, 1); // expected-error {{__builtin_longjmp is not supported for the current target}}28}29 30void f(void);31 32void do_setjmp(void) {33  if (!__builtin_setjmp(buf)) // expected-error {{__builtin_setjmp is not supported for the current target}}34    f();35}36