1
2// clang-format off
3// RUN: %libomptarget-compile-generic
4// RUN: %not --crash env -u LLVM_DISABLE_SYMBOLIZATION OFFLOAD_TRACK_NUM_KERNEL_LAUNCH_TRACES=1 %libomptarget-run-generic 2>&1 | %fcheck-generic --check-prefixes=CHECK,TRACE
5// RUN: %not --crash %libomptarget-run-generic 2>&1 | %fcheck-generic --check-prefixes=CHECK
6// RUN: %libomptarget-compile-generic -g
7// RUN: %not --crash env -u LLVM_DISABLE_SYMBOLIZATION OFFLOAD_TRACK_NUM_KERNEL_LAUNCH_TRACES=1 %libomptarget-run-generic 2>&1 | %fcheck-generic --check-prefixes=CHECK,TRACE
8// RUN: %not --crash %libomptarget-run-generic 2>&1 | %fcheck-generic --check-prefixes=CHECK
9// clang-format on
10
11// UNSUPPORTED: nvptx64-nvidia-cuda
12// UNSUPPORTED: nvptx64-nvidia-cuda-LTO
13// UNSUPPORTED: aarch64-unknown-linux-gnu
14// UNSUPPORTED: aarch64-unknown-linux-gnu-LTO
15// UNSUPPORTED: x86_64-unknown-linux-gnu
16// UNSUPPORTED: x86_64-unknown-linux-gnu-LTO
17// UNSUPPORTED: s390x-ibm-linux-gnu
18// UNSUPPORTED: s390x-ibm-linux-gnu-LTO
19
20#include <omp.h>
21
22int main(void) {
23
24#pragma omp target
25 {
26 }
27#pragma omp target
28 {
29 }
30#pragma omp target
31 {
32 __builtin_trap();
33 }
34#pragma omp target
35 {
36 }
37}
38// clang-format off
39// CHECK: OFFLOAD ERROR: Kernel 'omp target in main @ 30 (__omp_offloading_{{.*}}_main_l30)'
40// CHECK: OFFLOAD ERROR: execution interrupted by hardware trap instruction
41// TRACE: launchKernel
42// TRACE: main
43// clang-format on
44

source code of offload/test/sanitizer/kernel_trap.c