ABataev created this revision. ABataev added reviewers: jdoerfert, estewart08. Herald added subscribers: guansong, yaxunl. ABataev requested review of this revision. Herald added a subscriber: sstefan1. Herald added a project: clang.
Follow the more general patch for now, do not try to SPMDize the kernel if the variable is used and local. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D101911 Files: clang/lib/CodeGen/CGOpenMPRuntime.cpp clang/test/OpenMP/nvptx_SPMD_codegen.cpp Index: clang/test/OpenMP/nvptx_SPMD_codegen.cpp =================================================================== --- clang/test/OpenMP/nvptx_SPMD_codegen.cpp +++ clang/test/OpenMP/nvptx_SPMD_codegen.cpp @@ -120,10 +120,7 @@ // CHECK-DAG: [[DISTR_LIGHT]] // CHECK-DAG: [[FOR_LIGHT]] // CHECK-DAG: [[LIGHT]] -// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0) -// CHECK-DAG: [[DISTR_LIGHT]] -// CHECK-DAG: [[FOR_LIGHT]] -// CHECK-DAG: [[LIGHT]] +// CHECK: call void @__kmpc_kernel_init( // CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1) // CHECK-DAG: [[DISTR_FULL]] // CHECK-DAG: [[FULL]] Index: clang/lib/CodeGen/CGOpenMPRuntime.cpp =================================================================== --- clang/lib/CodeGen/CGOpenMPRuntime.cpp +++ clang/lib/CodeGen/CGOpenMPRuntime.cpp @@ -6565,7 +6565,7 @@ continue; // Analyze declarations. if (const auto *DS = dyn_cast<DeclStmt>(S)) { - if (llvm::all_of(DS->decls(), [&Ctx](const Decl *D) { + if (llvm::all_of(DS->decls(), [](const Decl *D) { if (isa<EmptyDecl>(D) || isa<DeclContext>(D) || isa<TypeDecl>(D) || isa<PragmaCommentDecl>(D) || isa<PragmaDetectMismatchDecl>(D) || isa<UsingDecl>(D) || @@ -6576,10 +6576,7 @@ const auto *VD = dyn_cast<VarDecl>(D); if (!VD) return false; - return VD->isConstexpr() || - ((VD->getType().isTrivialType(Ctx) || - VD->getType()->isReferenceType()) && - (!VD->hasInit() || isTrivial(Ctx, VD->getInit()))); + return VD->hasGlobalStorage() || !VD->isUsed(); })) continue; }
Index: clang/test/OpenMP/nvptx_SPMD_codegen.cpp =================================================================== --- clang/test/OpenMP/nvptx_SPMD_codegen.cpp +++ clang/test/OpenMP/nvptx_SPMD_codegen.cpp @@ -120,10 +120,7 @@ // CHECK-DAG: [[DISTR_LIGHT]] // CHECK-DAG: [[FOR_LIGHT]] // CHECK-DAG: [[LIGHT]] -// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0) -// CHECK-DAG: [[DISTR_LIGHT]] -// CHECK-DAG: [[FOR_LIGHT]] -// CHECK-DAG: [[LIGHT]] +// CHECK: call void @__kmpc_kernel_init( // CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1) // CHECK-DAG: [[DISTR_FULL]] // CHECK-DAG: [[FULL]] Index: clang/lib/CodeGen/CGOpenMPRuntime.cpp =================================================================== --- clang/lib/CodeGen/CGOpenMPRuntime.cpp +++ clang/lib/CodeGen/CGOpenMPRuntime.cpp @@ -6565,7 +6565,7 @@ continue; // Analyze declarations. if (const auto *DS = dyn_cast<DeclStmt>(S)) { - if (llvm::all_of(DS->decls(), [&Ctx](const Decl *D) { + if (llvm::all_of(DS->decls(), [](const Decl *D) { if (isa<EmptyDecl>(D) || isa<DeclContext>(D) || isa<TypeDecl>(D) || isa<PragmaCommentDecl>(D) || isa<PragmaDetectMismatchDecl>(D) || isa<UsingDecl>(D) || @@ -6576,10 +6576,7 @@ const auto *VD = dyn_cast<VarDecl>(D); if (!VD) return false; - return VD->isConstexpr() || - ((VD->getType().isTrivialType(Ctx) || - VD->getType()->isReferenceType()) && - (!VD->hasInit() || isTrivial(Ctx, VD->getInit()))); + return VD->hasGlobalStorage() || !VD->isUsed(); })) continue; }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits