llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang-driver @llvm/pr-subscribers-clang Author: Alex Voicu (AlexVlx) <details> <summary>Changes</summary> The forwarding header used by `hipstdpar` on AMDGPU targets is now pacakged with `rocThrust`. This change augments the ROCm Driver component so that it can automatically pick up the packaged header iff the user hasn't overridden it via the dedicated flag. --- Full diff: https://github.com/llvm/llvm-project/pull/78915.diff 2 Files Affected: - (modified) clang/lib/Driver/ToolChains/AMDGPU.cpp (+17-8) - (modified) clang/test/Driver/hipstdpar.c (+2-1) ``````````diff diff --git a/clang/lib/Driver/ToolChains/AMDGPU.cpp b/clang/lib/Driver/ToolChains/AMDGPU.cpp index 56f06fc5fccb7e..8a88dba562c8c0 100644 --- a/clang/lib/Driver/ToolChains/AMDGPU.cpp +++ b/clang/lib/Driver/ToolChains/AMDGPU.cpp @@ -545,26 +545,35 @@ void RocmInstallationDetector::AddHIPIncludeArgs(const ArgList &DriverArgs, } const auto HandleHipStdPar = [=, &DriverArgs, &CC1Args]() { - if (!hasHIPStdParLibrary()) { + StringRef Inc = getIncludePath(); + auto &FS = D.getVFS(); + + if (!hasHIPStdParLibrary()) + if (!HIPStdParPathArg.empty() || + !FS.exists(Inc + "/thrust/system/hip/hipstdpar/hipstdpar_lib.hpp")) { D.Diag(diag::err_drv_no_hipstdpar_lib); return; } - if (!HasRocThrustLibrary && - !D.getVFS().exists(getIncludePath() + "/thrust")) { + if (!HasRocThrustLibrary && !FS.exists(Inc + "/thrust")) { D.Diag(diag::err_drv_no_hipstdpar_thrust_lib); return; } - if (!HasRocPrimLibrary && - !D.getVFS().exists(getIncludePath() + "/rocprim")) { + if (!HasRocPrimLibrary && !FS.exists(Inc + "/rocprim")) { D.Diag(diag::err_drv_no_hipstdpar_prim_lib); return; } - const char *ThrustPath; if (HasRocThrustLibrary) ThrustPath = DriverArgs.MakeArgString(HIPRocThrustPathArg); else - ThrustPath = DriverArgs.MakeArgString(getIncludePath() + "/thrust"); + ThrustPath = DriverArgs.MakeArgString(Inc + "/thrust"); + + const char *HIPStdParPath; + if (hasHIPStdParLibrary()) + HIPStdParPath = DriverArgs.MakeArgString(HIPStdParPathArg); + else + HIPStdParPath = DriverArgs.MakeArgString(StringRef(ThrustPath) + + "/system/hip/hipstdpar"); const char *PrimPath; if (HasRocPrimLibrary) @@ -573,7 +582,7 @@ void RocmInstallationDetector::AddHIPIncludeArgs(const ArgList &DriverArgs, PrimPath = DriverArgs.MakeArgString(getIncludePath() + "/rocprim"); CC1Args.append({"-idirafter", ThrustPath, "-idirafter", PrimPath, - "-idirafter", DriverArgs.MakeArgString(HIPStdParPathArg), + "-idirafter", HIPStdParPath, "-include", "hipstdpar_lib.hpp"}); }; diff --git a/clang/test/Driver/hipstdpar.c b/clang/test/Driver/hipstdpar.c index 69c5b177d170cd..2f48bf6b5cf1eb 100644 --- a/clang/test/Driver/hipstdpar.c +++ b/clang/test/Driver/hipstdpar.c @@ -5,7 +5,8 @@ // XFAIL: target={{.*}}-scei{{.*}} // XFAIL: target={{.*}}-sie{{.*}} -// RUN: not %clang -### --hipstdpar -nogpulib -nogpuinc --compile %s 2>&1 | \ +// RUN: not %clang -### --hipstdpar --hipstdpar-path=/does/not/exist -nogpulib \ +// RUN: -nogpuinc --compile %s 2>&1 | \ // RUN: FileCheck --check-prefix=HIPSTDPAR-MISSING-LIB %s // RUN: %clang -### --hipstdpar --hipstdpar-path=%S/Inputs/hipstdpar \ // RUN: --hipstdpar-thrust-path=%S/Inputs/hipstdpar/thrust \ `````````` </details> https://github.com/llvm/llvm-project/pull/78915 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits