// RUN: %clang_cc1 -w -verify -fopenmp -I %S/Inputs -ast-print %s | FileCheck %s --check-prefix=CHECK
// expected-no-diagnostics

static int variable = 100;
static float variable1 = 200;
static float variable2 = variable1;

static int var = 1;

static int var1 = 10;
static int *var2 = &var1;
static int **ptr1 = &var2;

int arr[2] = {1,2};
int (*arrptr)[2] = &arr;

class declare{
  public: int x;
          void print();
};
declare obj1;
declare *obj2 = &obj1;

struct target{
  int x;
  void print();
};
static target S;

static int var3 = 100;
static int *ptr_3 = &var3;
static char c = 'a';

#pragma omp declare target
int target_var = variable;
float target_var1 = variable2;
int *ptr = &var;
int ***ptr2 = &ptr1;
int (**ptr3)[2] = &arrptr;
declare **obj3 = &obj2;
target *S1 = &S;
#pragma omp end declare target
#pragma omp declare target(ptr_3)
#pragma omp declare target to(c)

// CHECK: #pragma omp declare target
// CHECK-NEXT: static int variable = 100;
// CHECK-NEXT: #pragma omp end declare target

// CHECK-NEXT: #pragma omp declare target
// CHECK-NEXT: static float variable1 = 200;
// CHECK-NEXT: #pragma omp end declare target
// CHECK-NEXT: #pragma omp declare target
// CHECK-NEXT: static float variable2 = variable1;
// CHECK-NEXT: #pragma omp end declare target

// CHECK: #pragma omp declare target
// CHECK-NEXT: static int var = 1;
// CHECK-NEXT: #pragma omp end declare target

// CHECK-NEXT: #pragma omp declare target
// CHECK-NEXT: static int var1 = 10;
// CHECK-NEXT: #pragma omp end declare target
// CHECK-NEXT: #pragma omp declare target
// CHECK-NEXT: static int *var2 = &var1;
// CHECK-NEXT: #pragma omp end declare target
// CHECK-NEXT: #pragma omp declare target
// CHECK-NEXT: static int **ptr1 = &var2;
// CHECK-NEXT: #pragma omp end declare target

// CHECK-NEXT: #pragma omp declare target
// CHECK-NEXT: int arr[2] = {1, 2};
// CHECK-NEXT: #pragma omp end declare target
// CHECK-NEXT: #pragma omp declare target
// CHECK-NEXT: int (*arrptr)[2] = &arr;
// CHECK-NEXT: #pragma omp end declare target

// CHECK-NEXT: class declare {
// CHECK-NEXT: public:
// CHECK-NEXT:  int x;
// CHECK-NEXT:  void print();
// CHECK-NEXT: };
// CHECK-NEXT: #pragma omp declare target
// CHECK-NEXT: declare obj1;
// CHECK-NEXT: #pragma omp end declare target
// CHECK-NEXT: #pragma omp declare target
// CHECK-NEXT: declare *obj2 = &obj1;
// CHECK-NEXT: #pragma omp end declare target

// CHECK-NEXT: struct target {
// CHECK-NEXT:  int x;
// CHECK-NEXT:  void print();
// CHECK-NEXT: };
// CHECK-NEXT: #pragma omp declare target
// CHECK-NEXT: static target S;
// CHECK-NEXT: #pragma omp end declare target
// CHECK-NEXT: #pragma omp declare target
// CHECK-NEXT: static int var3 = 100;
// CHECK-NEXT: #pragma omp end declare target
// CHECK-NEXT: #pragma omp declare target
// CHECK-NEXT: static int *ptr_3 = &var3;
// CHECK-NEXT: #pragma omp end declare target
// CHECK-NEXT: #pragma omp declare target
// CHECK-NEXT: static char c = 'a';
// CHECK-NEXT: #pragma omp end declare target
// CHECK-NEXT: #pragma omp declare target
// CHECK-NEXT: int target_var = variable;
// CHECK-NEXT: #pragma omp end declare target
// CHECK-NEXT: #pragma omp declare target
// CHECK-NEXT: float target_var1 = variable2;
// CHECK-NEXT: #pragma omp end declare target
// CHECK-NEXT: #pragma omp declare target
// CHECK-NEXT: int *ptr = &var;
// CHECK-NEXT: #pragma omp end declare target
// CHECK-NEXT: #pragma omp declare target
// CHECK-NEXT: int ***ptr2 = &ptr1;
// CHECK-NEXT: #pragma omp end declare target
// CHECK-NEXT: #pragma omp declare target
// CHECK-NEXT: int (**ptr3)[2] = &arrptr;
// CHECK-NEXT: #pragma omp end declare target
// CHECK-NEXT: #pragma omp declare target
// CHECK-NEXT: declare **obj3 = &obj2;
// CHECK-NEXT: #pragma omp end declare target
// CHECK-NEXT: #pragma omp declare target
// CHECK-NEXT: target *S1 = &S;
// CHECK-NEXT: #pragma omp end declare target

