Vendor import of clang release_40 branch r296002:
https://llvm.org/svn/llvm-project/cfe/branches/release_40@296002
This commit is contained in:
parent
1b6fff624e
commit
47c4f8f166
@ -4705,7 +4705,6 @@ void CGOpenMPRuntime::emitCancellationPointCall(
|
||||
auto *Result = CGF.EmitRuntimeCall(
|
||||
createRuntimeFunction(OMPRTL__kmpc_cancellationpoint), Args);
|
||||
// if (__kmpc_cancellationpoint()) {
|
||||
// __kmpc_cancel_barrier();
|
||||
// exit from construct;
|
||||
// }
|
||||
auto *ExitBB = CGF.createBasicBlock(".cancel.exit");
|
||||
@ -4713,8 +4712,6 @@ void CGOpenMPRuntime::emitCancellationPointCall(
|
||||
auto *Cmp = CGF.Builder.CreateIsNotNull(Result);
|
||||
CGF.Builder.CreateCondBr(Cmp, ExitBB, ContBB);
|
||||
CGF.EmitBlock(ExitBB);
|
||||
// __kmpc_cancel_barrier();
|
||||
emitBarrierCall(CGF, Loc, OMPD_unknown, /*EmitChecks=*/false);
|
||||
// exit from construct;
|
||||
auto CancelDest =
|
||||
CGF.getOMPCancelDestination(OMPRegionInfo->getDirectiveKind());
|
||||
@ -4743,7 +4740,6 @@ void CGOpenMPRuntime::emitCancelCall(CodeGenFunction &CGF, SourceLocation Loc,
|
||||
auto *Result = CGF.EmitRuntimeCall(
|
||||
RT.createRuntimeFunction(OMPRTL__kmpc_cancel), Args);
|
||||
// if (__kmpc_cancel()) {
|
||||
// __kmpc_cancel_barrier();
|
||||
// exit from construct;
|
||||
// }
|
||||
auto *ExitBB = CGF.createBasicBlock(".cancel.exit");
|
||||
@ -4751,8 +4747,6 @@ void CGOpenMPRuntime::emitCancelCall(CodeGenFunction &CGF, SourceLocation Loc,
|
||||
auto *Cmp = CGF.Builder.CreateIsNotNull(Result);
|
||||
CGF.Builder.CreateCondBr(Cmp, ExitBB, ContBB);
|
||||
CGF.EmitBlock(ExitBB);
|
||||
// __kmpc_cancel_barrier();
|
||||
RT.emitBarrierCall(CGF, Loc, OMPD_unknown, /*EmitChecks=*/false);
|
||||
// exit from construct;
|
||||
auto CancelDest =
|
||||
CGF.getOMPCancelDestination(OMPRegionInfo->getDirectiveKind());
|
||||
|
@ -3154,7 +3154,7 @@ getCCForDeclaratorChunk(Sema &S, Declarator &D,
|
||||
if (Attr->getKind() == AttributeList::AT_OpenCLKernel) {
|
||||
llvm::Triple::ArchType arch = S.Context.getTargetInfo().getTriple().getArch();
|
||||
if (arch == llvm::Triple::spir || arch == llvm::Triple::spir64 ||
|
||||
arch == llvm::Triple::amdgcn) {
|
||||
arch == llvm::Triple::amdgcn || arch == llvm::Triple::r600) {
|
||||
CC = CC_OpenCLKernel;
|
||||
}
|
||||
break;
|
||||
|
@ -1,5 +1,6 @@
|
||||
// REQUIRES: amdgpu-registered-target
|
||||
// RUN: %clang_cc1 -triple amdgcn-unknown-unknown -S -emit-llvm -o - %s | FileCheck %s
|
||||
// RUN: %clang_cc1 -triple r600-unknown-unknown -S -emit-llvm -o - %s | FileCheck %s
|
||||
|
||||
// CHECK-NOT: %struct.single_element_struct_arg = type { i32 }
|
||||
typedef struct single_element_struct_arg
|
||||
|
@ -12,6 +12,8 @@ int main (int argc, char **argv) {
|
||||
{
|
||||
#pragma omp cancel parallel if(flag)
|
||||
argv[0][0] = argc;
|
||||
#pragma omp barrier
|
||||
argv[0][0] += argc;
|
||||
}
|
||||
// CHECK: call void (%ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(
|
||||
#pragma omp sections
|
||||
@ -20,7 +22,6 @@ int main (int argc, char **argv) {
|
||||
}
|
||||
// CHECK: call void @__kmpc_for_static_init_4(
|
||||
// CHECK: call i32 @__kmpc_cancel(
|
||||
// CHECK: call i32 @__kmpc_cancel_barrier(%ident_t*
|
||||
// CHECK: call void @__kmpc_for_static_fini(
|
||||
// CHECK: call void @__kmpc_barrier(%ident_t*
|
||||
#pragma omp sections
|
||||
@ -36,7 +37,6 @@ int main (int argc, char **argv) {
|
||||
// CHECK: [[CMP:%.+]] = icmp ne i32 [[RES]], 0
|
||||
// CHECK: br i1 [[CMP]], label %[[EXIT:[^,].+]], label %[[CONTINUE:.+]]
|
||||
// CHECK: [[EXIT]]
|
||||
// CHECK: call i32 @__kmpc_cancel_barrier(%ident_t*
|
||||
// CHECK: br label
|
||||
// CHECK: [[CONTINUE]]
|
||||
// CHECK: br label
|
||||
@ -44,7 +44,6 @@ int main (int argc, char **argv) {
|
||||
// CHECK: [[CMP:%.+]] = icmp ne i32 [[RES]], 0
|
||||
// CHECK: br i1 [[CMP]], label %[[EXIT:[^,].+]], label %[[CONTINUE:.+]]
|
||||
// CHECK: [[EXIT]]
|
||||
// CHECK: call i32 @__kmpc_cancel_barrier(%ident_t*
|
||||
// CHECK: br label
|
||||
// CHECK: [[CONTINUE]]
|
||||
// CHECK: br label
|
||||
@ -62,7 +61,6 @@ for (int i = 0; i < argc; ++i) {
|
||||
// CHECK: [[CMP:%.+]] = icmp ne i32 [[RES]], 0
|
||||
// CHECK: br i1 [[CMP]], label %[[EXIT:[^,].+]], label %[[CONTINUE:.+]]
|
||||
// CHECK: [[EXIT]]
|
||||
// CHECK: call i32 @__kmpc_cancel_barrier(%ident_t*
|
||||
// CHECK: br label
|
||||
// CHECK: [[CONTINUE]]
|
||||
// CHECK: br label
|
||||
@ -109,9 +107,10 @@ for (int i = 0; i < argc; ++i) {
|
||||
// CHECK: [[CMP:%.+]] = icmp ne i32 [[RES]], 0
|
||||
// CHECK: br i1 [[CMP]], label %[[EXIT:[^,]+]],
|
||||
// CHECK: [[EXIT]]
|
||||
// CHECK: call i32 @__kmpc_cancel_barrier(%ident_t*
|
||||
// CHECK: br label %[[RETURN:.+]]
|
||||
// CHECK: [[ELSE]]
|
||||
// The barrier directive should now call __kmpc_cancel_barrier
|
||||
// CHECK: call i32 @__kmpc_cancel_barrier(%ident_t*
|
||||
// CHECK: br label
|
||||
// CHECK: [[RETURN]]
|
||||
// CHECK: ret void
|
||||
@ -121,7 +120,6 @@ for (int i = 0; i < argc; ++i) {
|
||||
// CHECK: [[CMP:%.+]] = icmp ne i32 [[RES]], 0
|
||||
// CHECK: br i1 [[CMP]], label %[[EXIT:[^,]+]],
|
||||
// CHECK: [[EXIT]]
|
||||
// CHECK: call i32 @__kmpc_cancel_barrier(%ident_t*
|
||||
// CHECK: br label %[[RETURN:.+]]
|
||||
// CHECK: [[RETURN]]
|
||||
// CHECK: ret i32 0
|
||||
@ -129,7 +127,6 @@ for (int i = 0; i < argc; ++i) {
|
||||
// CHECK: define internal void @{{[^(]+}}(i32* {{[^,]+}}, i32* {{[^,]+}})
|
||||
// CHECK: call void @__kmpc_for_static_init_4(
|
||||
// CHECK: call i32 @__kmpc_cancel(
|
||||
// CHECK: call i32 @__kmpc_cancel_barrier(%ident_t*
|
||||
// CHECK: call void @__kmpc_for_static_fini(
|
||||
// CHECK: ret void
|
||||
|
||||
@ -139,7 +136,6 @@ for (int i = 0; i < argc; ++i) {
|
||||
// CHECK: [[CMP:%.+]] = icmp ne i32 [[RES]], 0
|
||||
// CHECK: br i1 [[CMP]], label %[[EXIT:[^,].+]], label %[[CONTINUE:.+]]
|
||||
// CHECK: [[EXIT]]
|
||||
// CHECK: call i32 @__kmpc_cancel_barrier(%ident_t*
|
||||
// CHECK: br label
|
||||
// CHECK: [[CONTINUE]]
|
||||
// CHECK: br label
|
||||
@ -147,7 +143,6 @@ for (int i = 0; i < argc; ++i) {
|
||||
// CHECK: [[CMP:%.+]] = icmp ne i32 [[RES]], 0
|
||||
// CHECK: br i1 [[CMP]], label %[[EXIT:[^,].+]], label %[[CONTINUE:.+]]
|
||||
// CHECK: [[EXIT]]
|
||||
// CHECK: call i32 @__kmpc_cancel_barrier(%ident_t*
|
||||
// CHECK: br label
|
||||
// CHECK: [[CONTINUE]]
|
||||
// CHECK: br label
|
||||
@ -160,7 +155,6 @@ for (int i = 0; i < argc; ++i) {
|
||||
// CHECK: [[CMP:%.+]] = icmp ne i32 [[RES]], 0
|
||||
// CHECK: br i1 [[CMP]], label %[[EXIT:[^,].+]], label %[[CONTINUE:.+]]
|
||||
// CHECK: [[EXIT]]
|
||||
// CHECK: call i32 @__kmpc_cancel_barrier(%ident_t*
|
||||
// CHECK: br label
|
||||
// CHECK: [[CONTINUE]]
|
||||
// CHECK: br label
|
||||
|
@ -26,7 +26,6 @@ int main (int argc, char **argv) {
|
||||
// CHECK: [[CMP:%.+]] = icmp ne i32 [[RES]], 0
|
||||
// CHECK: br i1 [[CMP]], label %[[EXIT:[^,].+]], label %[[CONTINUE:.+]]
|
||||
// CHECK: [[EXIT]]
|
||||
// CHECK: call i32 @__kmpc_cancel_barrier(%ident_t*
|
||||
// CHECK: br label
|
||||
// CHECK: [[CONTINUE]]
|
||||
// CHECK: br label
|
||||
@ -46,7 +45,6 @@ int main (int argc, char **argv) {
|
||||
// CHECK: [[CMP:%.+]] = icmp ne i32 [[RES]], 0
|
||||
// CHECK: br i1 [[CMP]], label %[[EXIT:[^,].+]], label %[[CONTINUE:.+]]
|
||||
// CHECK: [[EXIT]]
|
||||
// CHECK: call i32 @__kmpc_cancel_barrier(%ident_t*
|
||||
// CHECK: br label
|
||||
// CHECK: [[CONTINUE]]
|
||||
// CHECK: br label
|
||||
@ -54,7 +52,6 @@ int main (int argc, char **argv) {
|
||||
// CHECK: [[CMP:%.+]] = icmp ne i32 [[RES]], 0
|
||||
// CHECK: br i1 [[CMP]], label %[[EXIT:[^,].+]], label %[[CONTINUE:.+]]
|
||||
// CHECK: [[EXIT]]
|
||||
// CHECK: call i32 @__kmpc_cancel_barrier(%ident_t*
|
||||
// CHECK: br label
|
||||
// CHECK: [[CONTINUE]]
|
||||
// CHECK: br label
|
||||
@ -69,7 +66,6 @@ for (int i = 0; i < argc; ++i) {
|
||||
// CHECK: [[CMP:%.+]] = icmp ne i32 [[RES]], 0
|
||||
// CHECK: br i1 [[CMP]], label %[[EXIT:[^,].+]], label %[[CONTINUE:.+]]
|
||||
// CHECK: [[EXIT]]
|
||||
// CHECK: call i32 @__kmpc_cancel_barrier(%ident_t*
|
||||
// CHECK: br label
|
||||
// CHECK: [[CONTINUE]]
|
||||
// CHECK: br label
|
||||
@ -116,7 +112,6 @@ for (int i = 0; i < argc; ++i) {
|
||||
// CHECK: [[CMP:%.+]] = icmp ne i32 [[RES]], 0
|
||||
// CHECK: br i1 [[CMP]], label %[[EXIT:[^,]+]],
|
||||
// CHECK: [[EXIT]]
|
||||
// CHECK: call i32 @__kmpc_cancel_barrier(%ident_t*
|
||||
// CHECK: br label %[[RETURN:.+]]
|
||||
// CHECK: [[RETURN]]
|
||||
// CHECK: ret void
|
||||
@ -126,7 +121,6 @@ for (int i = 0; i < argc; ++i) {
|
||||
// CHECK: [[CMP:%.+]] = icmp ne i32 [[RES]], 0
|
||||
// CHECK: br i1 [[CMP]], label %[[EXIT:[^,]+]],
|
||||
// CHECK: [[EXIT]]
|
||||
// CHECK: call i32 @__kmpc_cancel_barrier(%ident_t*
|
||||
// CHECK: br label %[[RETURN:.+]]
|
||||
// CHECK: [[RETURN]]
|
||||
// CHECK: ret i32 0
|
||||
@ -137,7 +131,6 @@ for (int i = 0; i < argc; ++i) {
|
||||
// CHECK: [[CMP:%.+]] = icmp ne i32 [[RES]], 0
|
||||
// CHECK: br i1 [[CMP]], label %[[EXIT:[^,].+]], label %[[CONTINUE:.+]]
|
||||
// CHECK: [[EXIT]]
|
||||
// CHECK: call i32 @__kmpc_cancel_barrier(%ident_t*
|
||||
// CHECK: br label
|
||||
// CHECK: [[CONTINUE]]
|
||||
// CHECK: br label
|
||||
@ -150,7 +143,6 @@ for (int i = 0; i < argc; ++i) {
|
||||
// CHECK: [[CMP:%.+]] = icmp ne i32 [[RES]], 0
|
||||
// CHECK: br i1 [[CMP]], label %[[EXIT:[^,].+]], label %[[CONTINUE:.+]]
|
||||
// CHECK: [[EXIT]]
|
||||
// CHECK: call i32 @__kmpc_cancel_barrier(%ident_t*
|
||||
// CHECK: br label
|
||||
// CHECK: [[CONTINUE]]
|
||||
// CHECK: br label
|
||||
@ -158,7 +150,6 @@ for (int i = 0; i < argc; ++i) {
|
||||
// CHECK: [[CMP:%.+]] = icmp ne i32 [[RES]], 0
|
||||
// CHECK: br i1 [[CMP]], label %[[EXIT:[^,].+]], label %[[CONTINUE:.+]]
|
||||
// CHECK: [[EXIT]]
|
||||
// CHECK: call i32 @__kmpc_cancel_barrier(%ident_t*
|
||||
// CHECK: br label
|
||||
// CHECK: [[CONTINUE]]
|
||||
// CHECK: br label
|
||||
@ -171,7 +162,6 @@ for (int i = 0; i < argc; ++i) {
|
||||
// CHECK: [[CMP:%.+]] = icmp ne i32 [[RES]], 0
|
||||
// CHECK: br i1 [[CMP]], label %[[EXIT:[^,].+]], label %[[CONTINUE:.+]]
|
||||
// CHECK: [[EXIT]]
|
||||
// CHECK: call i32 @__kmpc_cancel_barrier(%ident_t*
|
||||
// CHECK: br label
|
||||
// CHECK: [[CONTINUE]]
|
||||
// CHECK: br label
|
||||
|
Loading…
Reference in New Issue
Block a user