brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · bb83f23 Raw
110 lines · c
1// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=50 -ast-print %s | FileCheck %s2// RUN: %clang_cc1 -fopenmp -fopenmp-version=50 -emit-pch -o %t %s3// RUN: %clang_cc1 -fopenmp -fopenmp-version=50 -include-pch %t -verify %s -ast-print | FileCheck %s4 5// RUN: %clang_cc1 -verify -fopenmp-simd -fopenmp-version=50 -ast-print %s | FileCheck %s6// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=50 -emit-pch -o %t %s7// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=50 -include-pch %t -verify %s -ast-print | FileCheck %s8 9// RUN: %clang_cc1 -DOMP51 -verify -fopenmp -ast-print %s | FileCheck -check-prefixes=CHECK,OMP51 %s10// RUN: %clang_cc1 -DOMP51 -fopenmp -emit-pch -o %t %s11// RUN: %clang_cc1 -DOMP51 -fopenmp -include-pch %t -verify %s -ast-print | FileCheck -check-prefixes=CHECK,OMP51 %s12 13// RUN: %clang_cc1 -DOMP51 -verify -fopenmp-simd -ast-print %s | FileCheck -check-prefixes=CHECK,OMP51 %s14// RUN: %clang_cc1 -DOMP51 -fopenmp-simd -emit-pch -o %t %s15// RUN: %clang_cc1 -DOMP51 -fopenmp-simd -include-pch %t -verify %s -ast-print | FileCheck -check-prefixes=CHECK,OMP51 %s16 17// RUN: %clang_cc1 -DOMP52 -verify -fopenmp -fopenmp-version=52 -ast-print %s | FileCheck -check-prefixes=CHECK,OMP52 %s18// RUN: %clang_cc1 -DOMP52 -fopenmp -fopenmp-version=52 -emit-pch -o %t %s19// RUN: %clang_cc1 -DOMP52 -fopenmp -fopenmp-version=52 -include-pch %t -verify %s -ast-print | FileCheck -check-prefixes=CHECK,OMP52 %s20 21// RUN: %clang_cc1 -DOMP52 -verify -fopenmp-simd -fopenmp-version=52 -ast-print %s | FileCheck -check-prefixes=CHECK,OMP52 %s22// RUN: %clang_cc1 -DOMP52 -fopenmp-simd -fopenmp-version=52 -emit-pch -o %t %s23// RUN: %clang_cc1 -DOMP52 -fopenmp-simd -fopenmp-version=52 -include-pch %t -verify %s -ast-print | FileCheck -check-prefixes=CHECK,OMP52 %s24// expected-no-diagnostics25 26#ifndef HEADER27#define HEADER28 29// CHECK: struct vec {30struct vec {31  int len;32  double *data;33};34// CHECK: };35 36// CHECK: struct dat {37struct dat {38  int i;39  double d;40#pragma omp declare mapper(id: struct vec v) map(v.len)41// CHECK: #pragma omp declare mapper (id : struct vec v) map(tofrom: v.len){{$}}42};43// CHECK: };44 45#pragma omp declare mapper(id: struct vec v) map(v.len)46// CHECK: #pragma omp declare mapper (id : struct vec v) map(tofrom: v.len){{$}}47#pragma omp declare mapper(default : struct vec kk) map(kk.len) map(kk.data[0:2])48// CHECK: #pragma omp declare mapper (default : struct vec kk) map(tofrom: kk.len) map(tofrom: kk.data[0:2]){{$}}49#pragma omp declare mapper(struct dat d) map(to: d.d)50// CHECK: #pragma omp declare mapper (default : struct dat d) map(to: d.d){{$}}51 52// Verify that nested default mappers do not lead to a crash during parsing / sema.53// CHECK: struct inner {54struct inner {55  int size;56  int *data;57};58#pragma omp declare mapper(struct inner i) map(i, i.data[0 : i.size])59// CHECK: #pragma omp declare mapper (default : struct inner i) map(tofrom: default::i,i.data[0:i.size]){{$}}60 61// CHECK: struct outer {62struct outer {63  int a;64  struct inner i;65};66#pragma omp declare mapper(struct outer o) map(o)67// CHECK: #pragma omp declare mapper (default : struct outer o) map(tofrom: default::o) map(tofrom: o.i){{$}}68 69// CHECK: int main(void) {70int main(void) {71#pragma omp declare mapper(id: struct vec v) map(v.len)72// CHECK: #pragma omp declare mapper (id : struct vec v) map(tofrom: v.len)73  {74#pragma omp declare mapper(id: struct vec v) map(v.len)75// CHECK: #pragma omp declare mapper (id : struct vec v) map(tofrom: v.len)76    struct vec vv;77    struct dat dd[10];78#pragma omp target map(mapper(id), alloc: vv)79// CHECK: #pragma omp target map(mapper(id),alloc: vv)80    { vv.len++; }81#pragma omp target map(mapper(default), from: dd[0:10])82// CHECK: #pragma omp target map(mapper(default),from: dd[0:10])83    { dd[0].i++; }84#pragma omp target update to(mapper(id): vv) from(mapper(default): dd[0:10])85// CHECK: #pragma omp target update to(mapper(id): vv) from(mapper(default): dd[0:10])86#ifdef OMP5187#pragma omp target update to(mapper(id) present: vv) from(mapper(default), present: dd[0:10])88// OMP51: #pragma omp target update to(mapper(id), present: vv) from(mapper(default), present: dd[0:10])89#pragma omp target update to(present mapper(id): vv) from(present, mapper(default): dd[0:10])90// OMP51: #pragma omp target update to(present, mapper(id): vv) from(present, mapper(default): dd[0:10])91#endif92  }93#ifdef OMP5294#pragma omp declare mapper(id1: struct vec vvec) map(iterator(it=0:vvec.len:2), tofrom:vvec.data[it])95// OMP52: #pragma omp declare mapper (id1 : struct vec vvec) map(iterator(int it = 0:vvec.len:2),tofrom: vvec.data[it]);96#endif97 98  {99    struct outer outer;100#pragma omp target map(outer)101// CHECK: #pragma omp target map(tofrom: outer)102    { }103  }104 105  return 0;106}107// CHECK: }108 109#endif110