forked from OSchip/llvm-project
[OPENMP]Fix PR40536: Do not emit __kmpc_push_target_tripcount if not
required. Function __kmpc_push_target_tripcount should be emitted only if the offloading entry is going to be emitted (for use in tgt_target... functions). Otherwise, it should not be emitted. llvm-svn: 352669
This commit is contained in:
parent
04a83a4cae
commit
4920e1a72e
|
@ -4078,8 +4078,9 @@ static void emitCommonOMPTargetDirective(CodeGenFunction &CGF,
|
|||
/*IsSigned=*/false);
|
||||
return NumIterations;
|
||||
};
|
||||
CGM.getOpenMPRuntime().emitTargetNumIterationsCall(CGF, S, Device,
|
||||
SizeEmitter);
|
||||
if (IsOffloadEntry)
|
||||
CGM.getOpenMPRuntime().emitTargetNumIterationsCall(CGF, S, Device,
|
||||
SizeEmitter);
|
||||
CGM.getOpenMPRuntime().emitTargetCall(CGF, S, Fn, FnID, IfCond, Device);
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#ifndef HEADER
|
||||
#define HEADER
|
||||
// Test host codegen.
|
||||
// RUN: %clang_cc1 -DCK1 -verify -fopenmp -x c++ -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck %s --check-prefix HCK_NO_TGT
|
||||
// RUN: %clang_cc1 -DCK1 -verify -fopenmp -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-llvm %s -o - | FileCheck %s --check-prefix CK1 --check-prefix CK1-64 --check-prefix HCK1 --check-prefix HCK1-64
|
||||
// RUN: %clang_cc1 -DCK1 -fopenmp -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-pch -o %t %s
|
||||
// RUN: %clang_cc1 -DCK1 -fopenmp -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s --check-prefix CK1 --check-prefix CK1-64 --check-prefix HCK1 --check-prefix HCK1-64
|
||||
|
@ -38,6 +39,8 @@
|
|||
|
||||
#ifdef CK1
|
||||
|
||||
// HCK_NO_TGT-NOT: @__kmpc_push_target_tripcount
|
||||
|
||||
// HCK1: define{{.*}} i32 @{{.+}}target_teams_fun{{.*}}(
|
||||
int target_teams_fun(int *g){
|
||||
int n = 1000;
|
||||
|
|
|
@ -83,7 +83,7 @@ int main() {
|
|||
// CHECK: call void @__kmpc_push_target_tripcount(i64 -1, i64 100)
|
||||
// CHECK: call i{{[0-9]+}} @__tgt_target_teams(
|
||||
// CHECK: call void [[OFFLOADING_FUN_0:@.+]](
|
||||
// CHECK: call void @__kmpc_push_target_tripcount(i64 -1, i64 100)
|
||||
// CHECK-NOT: call void @__kmpc_push_target_tripcount(i64 -1, i64 100)
|
||||
// CHECK: call void [[OFFLOADING_FUN_1:@.+]](
|
||||
// CHECK: call void @__kmpc_push_target_tripcount(i64 -1, i64 100)
|
||||
// CHECK: call i{{[0-9]+}} @__tgt_target_teams(
|
||||
|
|
|
@ -83,7 +83,7 @@ int main() {
|
|||
// CHECK: call void @__kmpc_push_target_tripcount(i64 -1, i64 100)
|
||||
// CHECK: call i{{[0-9]+}} @__tgt_target_teams(
|
||||
// CHECK: call void [[OFFLOADING_FUN_0:@.+]](
|
||||
// CHECK: call void @__kmpc_push_target_tripcount(i64 -1, i64 100)
|
||||
// CHECK-NOT: call void @__kmpc_push_target_tripcount(i64 -1, i64 100)
|
||||
// CHECK: call void [[OFFLOADING_FUN_1:@.+]](
|
||||
// CHECK: call void @__kmpc_push_target_tripcount(i64 -1, i64 100)
|
||||
// CHECK: call i{{[0-9]+}} @__tgt_target_teams(
|
||||
|
|
Loading…
Reference in New Issue