60 lines · c
1// This testcase checks emission of debug info for threadprivate variables2// present in any clause of OpenMP construct.3 4// REQUIRES: x86-registered-target5 6// RUN: %clang_cc1 -debug-info-kind=constructor -x c -verify -triple x86_64-pc-linux-gnu -fopenmp -emit-llvm %s -o - | FileCheck %s7// expected-no-diagnostics8 9// CHECK: define internal void @main.omp_outlined_debug__(10// CHECK: #dbg_declare(ptr %.global_tid..addr,11// CHECK: #dbg_declare(ptr %.bound_tid..addr,12// CHECK: #dbg_declare(ptr %nt.addr13// CHECK: store ptr %gbl_dynamic_int, ptr %gbl_dynamic_int.addr, align 814// CHECK-NOT: #dbg_declare(ptr %gbl_dynamic_int.addr15// CHECK-NOT: #dbg_declare(ptr %gbl_static_int.addr16 17extern int printf(const char *, ...);18extern void omp_set_num_threads(int);19extern int omp_get_num_threads(void);20extern int omp_get_thread_num(void);21 22int gbl_dynamic_int;23__thread int gbl_static_int;24 25#pragma omp threadprivate(gbl_dynamic_int)26 27int main() {28 int nt = 0;29 int offset = 10;30 gbl_dynamic_int = 55;31 gbl_static_int = 77;32 33 omp_set_num_threads(4);34#pragma omp parallel copyin(gbl_dynamic_int, gbl_static_int)35 {36 int data;37 int tid;38 nt = omp_get_num_threads();39 tid = omp_get_thread_num();40 data = gbl_dynamic_int + gbl_static_int;41 gbl_dynamic_int += 10;42 gbl_static_int += 20;43#pragma omp barrier44 if (tid == 0)45 printf("In parallel region total threads = %d, thread id = %d data=%d gbl_dyn_addr = %p, gbl_static_addr = %p\n",46 nt, tid, data, &gbl_dynamic_int, &gbl_static_int);47 if (tid == 1)48 printf("In parallel region total threads = %d, thread id = %d data=%d gbl_dyn_addr = %p, gbl_static_addr = %p\n",49 nt, tid, data, &gbl_dynamic_int, &gbl_static_int);50 if (tid == 2)51 printf("In parallel region total threads = %d, thread id = %d data=%d gbl_dyn_addr = %p, gbl_static_addr = %p\n",52 nt, tid, data, &gbl_dynamic_int, &gbl_static_int);53 if (tid == 3)54 printf("In parallel region total threads = %d, thread id = %d data=%d gbl_dyn_addr = %p, gbl_static_addr = %p\n",55 nt, tid, data, &gbl_dynamic_int, &gbl_static_int);56 }57 58 return 0;59}60