brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · ac86299 Raw
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