Author: Alex Voicu Date: 2024-01-23T00:55:59Z New Revision: 907f2a0927d94d72d59f27e411c595b95aa673e9
URL: https://github.com/llvm/llvm-project/commit/907f2a0927d94d72d59f27e411c595b95aa673e9 DIFF: https://github.com/llvm/llvm-project/commit/907f2a0927d94d72d59f27e411c595b95aa673e9.diff LOG: [HIP][Driver] Automatically include `hipstdpar` forwarding header (#78915) 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. Added: Modified: clang/lib/Driver/ToolChains/AMDGPU.cpp clang/test/Driver/hipstdpar.c Removed: ################################################################################ diff --git a/clang/lib/Driver/ToolChains/AMDGPU.cpp b/clang/lib/Driver/ToolChains/AMDGPU.cpp index 56f06fc5fccb7eb..b3c9d5908654f6a 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()) { - D.Diag(diag::err_drv_no_hipstdpar_lib); - return; - } - if (!HasRocThrustLibrary && - !D.getVFS().exists(getIncludePath() + "/thrust")) { + 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 && !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,8 +582,8 @@ void RocmInstallationDetector::AddHIPIncludeArgs(const ArgList &DriverArgs, PrimPath = DriverArgs.MakeArgString(getIncludePath() + "/rocprim"); CC1Args.append({"-idirafter", ThrustPath, "-idirafter", PrimPath, - "-idirafter", DriverArgs.MakeArgString(HIPStdParPathArg), - "-include", "hipstdpar_lib.hpp"}); + "-idirafter", HIPStdParPath, "-include", + "hipstdpar_lib.hpp"}); }; if (DriverArgs.hasArg(options::OPT_nogpuinc)) { diff --git a/clang/test/Driver/hipstdpar.c b/clang/test/Driver/hipstdpar.c index 69c5b177d170cd8..2f48bf6b5cf1ebd 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 \ _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits