eaa341fbea
Many OpenMP Clang tests do not RUN for version 4.5 and the default version. This first patch in the series only handles test cases which do not require any modifications in the CHECK lines after adding RUN lines for default version. Reviewed By: ABataev Differential Revision: https://reviews.llvm.org/D84844
54 lines
1.7 KiB
C++
54 lines
1.7 KiB
C++
// RUN: %clang_cc1 -std=c++11 -fopenmp -fopenmp-version=45 -triple x86_64-apple-darwin13.4.0 -emit-llvm -o - %s | FileCheck %s
|
|
|
|
// RUN: %clang_cc1 -std=c++11 -fopenmp-simd -fopenmp-version=45 -triple x86_64-apple-darwin13.4.0 -emit-llvm -o - %s | FileCheck --check-prefix SIMD-ONLY0 %s
|
|
// SIMD-ONLY0-NOT: {{__kmpc|__tgt}}
|
|
|
|
// RUN: %clang_cc1 -std=c++11 -fopenmp -triple x86_64-apple-darwin13.4.0 -emit-llvm -o - %s | FileCheck %s
|
|
// RUN: %clang_cc1 -std=c++11 -fopenmp-simd -triple x86_64-apple-darwin13.4.0 -emit-llvm -o - %s | FileCheck --check-prefix SIMD-ONLY0 %s
|
|
// SIMD-ONLY0-NOT: {{__kmpc|__tgt}}
|
|
|
|
//CHECK: call i32 @__kmpc_cancel
|
|
//CHECK: br {{.*}}label %[[EXIT:[^,].+]], label %[[CONTINUE:.+]]
|
|
//CHECK: [[EXIT]]:
|
|
//CHECK: store i32 [[EXIT_SLOT:[0-9]+]]
|
|
//CHECK: br label %[[CLEANUP:.+]]
|
|
//CHECK: [[CONTINUE]]:
|
|
//CHECK: store i32 [[CONT_SLOT:[0-9]+]],
|
|
//CHECK: br label %[[CLEANUP]]
|
|
//CHECK: [[CLEANUP]]:
|
|
//CHECK-NEXT: call void @_ZN3ObjD1Ev
|
|
//CHECK: switch i32{{.*}}, label %[[UNREACHABLE:.+]] [
|
|
//CHECK: i32 [[CONT_SLOT]], label %[[CLEANUPCONT:.+]]
|
|
//CHECK: i32 [[EXIT_SLOT]], label %[[CANCELEXIT:.+]]
|
|
//CHECK-NEXT: ]
|
|
//CHECK: [[CLEANUPCONT]]:
|
|
//CHECK: br label %[[CANCELCONT:.+]]
|
|
//CHECK: [[CANCELCONT]]:
|
|
//CHECK-NEXT: call void @__kmpc_barrier(
|
|
//CHECK-NEXT: ret void
|
|
//CHECK: [[UNREACHABLE]]:
|
|
//CHECK-NEXT: unreachable
|
|
//CHECK-NEXT: }
|
|
|
|
struct Obj {
|
|
int a; Obj(); Obj(const Obj& r) = delete; Obj &operator=(const Obj& r);
|
|
~Obj();
|
|
};
|
|
|
|
void foo() {
|
|
int i,count = 0;
|
|
Obj obj;
|
|
|
|
#pragma omp parallel private(i) num_threads(1)
|
|
{
|
|
#pragma omp for reduction(+:count) lastprivate(obj)
|
|
for (i=0; i<1000; i++) {
|
|
if(i==100) {
|
|
obj.a = 100;
|
|
#pragma omp cancel for
|
|
}
|
|
count++;
|
|
}
|
|
}
|
|
}
|