diff --git a/0001-HIP-Fix-HIP-include-path.patch b/0001-HIP-Fix-HIP-include-path.patch new file mode 100644 index 0000000..d7bf377 --- /dev/null +++ b/0001-HIP-Fix-HIP-include-path.patch @@ -0,0 +1,122 @@ +From 4218b3ad4f7a444ab72bd50c15d2adca85ac23c9 Mon Sep 17 00:00:00 2001 +From: "Yaxun (Sam) Liu" +Date: Wed, 9 Mar 2022 09:10:17 -0500 +Subject: [PATCH] [HIP] Fix HIP include path + +The clang compiler prepends the HIP header include paths to the search +list using -internal-isystem when building for the HIP language. This +prevents warnings related to things like reserved identifiers when +including the HIP headers even when ROCm is installed in a non-system +directory, such as /opt/rocm. + +However, when HIP is installed in /usr, then the prepended include +path would be /usr/include. That is a problem, because the C standard +library headers are stored in /usr/include and the C++ standard +library headers must come before the C library headers in the search +path list (because the C++ standard library headers use #include_next +to include the C standard library headers). + +While the HIP wrapper headers _do_ need to be earlier in the search +than the C++ headers, those headers get their own subdirectory and +their own explicit -internal-isystem argument. This include path is for + and , which do not require a +particular search ordering with respect to the C or C++ headers. Thus, +HIP include path is added after other system include paths. + +With contribution from Cordell Bloor. + +Reviewed by: Artem Belevich + +Differential Revision: https://reviews.llvm.org/D120132 +--- + clang/lib/Driver/ToolChains/AMDGPU.cpp | 2 +- + clang/test/Driver/hip-include-path.hip | 10 +++++----- + clang/test/Driver/rocm-detect.hip | 6 +++--- + 3 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/clang/lib/Driver/ToolChains/AMDGPU.cpp b/clang/lib/Driver/ToolChains/AMDGPU.cpp +index 43ce33750eba..9638fa2ecfca 100644 +--- a/clang/lib/Driver/ToolChains/AMDGPU.cpp ++++ b/clang/lib/Driver/ToolChains/AMDGPU.cpp +@@ -510,7 +510,7 @@ void RocmInstallationDetector::AddHIPIncludeArgs(const ArgList &DriverArgs, + return; + } + +- CC1Args.push_back("-internal-isystem"); ++ CC1Args.push_back("-idirafter"); + CC1Args.push_back(DriverArgs.MakeArgString(getIncludePath())); + if (UsesRuntimeWrapper) + CC1Args.append({"-include", "__clang_hip_runtime_wrapper.h"}); +diff --git a/clang/test/Driver/hip-include-path.hip b/clang/test/Driver/hip-include-path.hip +index dce42f58fdf5..92f2fab6c24c 100644 +--- a/clang/test/Driver/hip-include-path.hip ++++ b/clang/test/Driver/hip-include-path.hip +@@ -19,24 +19,24 @@ + // COMMON-LABEL: "{{[^"]*}}clang{{[^"]*}}" "-cc1" + // CLANG-SAME: "-internal-isystem" "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include/cuda_wrappers" + // NOCLANG-NOT: "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include/cuda_wrappers" +-// HIP-SAME: "-internal-isystem" "{{[^"]*}}Inputs/rocm/include" +-// NOHIP-NOT: "{{.*}}Inputs/rocm/include" ++// HIP-SAME: "-idirafter" "{{[^"]*}}Inputs/rocm/include" + // HIP-SAME: "-include" "__clang_hip_runtime_wrapper.h" + // NOHIP-NOT: "-include" "__clang_hip_runtime_wrapper.h" + // skip check of standard C++ include path + // CLANG-SAME: "-internal-isystem" "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include" + // NOCLANG-NOT: "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include" ++// NOHIP-NOT: "{{.*}}Inputs/rocm/include" + + // COMMON-LABEL: "{{[^"]*}}clang{{[^"]*}}" "-cc1" + // CLANG-SAME: "-internal-isystem" "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include/cuda_wrappers" + // NOCLANG-NOT: "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include/cuda_wrappers" +-// HIP-SAME: "-internal-isystem" "{{[^"]*}}Inputs/rocm/include" +-// NOHIP-NOT: "{{.*}}Inputs/rocm/include" ++// HIP-SAME: "-idirafter" "{{[^"]*}}Inputs/rocm/include" + // HIP-SAME: "-include" "__clang_hip_runtime_wrapper.h" + // NOHIP-NOT: "-include" "__clang_hip_runtime_wrapper.h" + // skip check of standard C++ include path + // CLANG-SAME: "-internal-isystem" "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include" + // NOCLANG-NOT: "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include" ++// NOHIP-NOT: "{{.*}}Inputs/rocm/include" + + // RUN: %clang -c -### -target x86_64-unknown-linux-gnu --cuda-gpu-arch=gfx900 \ + // RUN: -std=c++11 --rocm-path=%S/Inputs/rocm -nogpulib %s 2>&1 \ +@@ -45,7 +45,7 @@ + // ROCM35-LABEL: "{{[^"]*}}clang{{[^"]*}}" "-cc1" + // ROCM35-NOT: "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include/cuda_wrappers" + // ROCM35-SAME: "-internal-isystem" "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}" +-// ROCM35-SAME: "-internal-isystem" "{{[^"]*}}Inputs/rocm/include" ++// ROCM35-SAME: "-idirafter" "{{[^"]*}}Inputs/rocm/include" + // ROCM35-NOT: "-include" "__clang_hip_runtime_wrapper.h" + // skip check of standard C++ include path + // ROCM35-SAME: "-internal-isystem" "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include" +diff --git a/clang/test/Driver/rocm-detect.hip b/clang/test/Driver/rocm-detect.hip +index 3ab0175cf1f1..7166c42e9691 100644 +--- a/clang/test/Driver/rocm-detect.hip ++++ b/clang/test/Driver/rocm-detect.hip +@@ -90,7 +90,7 @@ + // SPACK: Found HIP installation: [[DIR]]/hip-4.0.0-5f63slrursbrvfe2txrrjkynbsywsob5, version 4.0.20214-a2917cd + // SPACK: "-triple" "amdgcn-amd-amdhsa" + // SPACK-SAME: "-mlink-builtin-bitcode" "[[DIR]]/llvm-amdgpu-4.0.0-ieagcs7inf7runpyfvepqkurasoglq4z/amdgcn/bitcode/hip.bc" +-// SPACK-SAME: "-internal-isystem" "[[DIR]]/hip-4.0.0-5f63slrursbrvfe2txrrjkynbsywsob5/include" ++// SPACK-SAME: "-idirafter" "[[DIR]]/hip-4.0.0-5f63slrursbrvfe2txrrjkynbsywsob5/include" + + // SPACK-MULT: InstalledDir: [[DIR:.*]]/llvm-amdgpu-4.0.0-ieagcs7inf7runpyfvepqkurasoglq4z/bin + // SPACK-MULT-DAG: Cannot use SPACK package hip-4.0.0 at [[DIR]] due to multiple installations for the same version +@@ -101,12 +101,12 @@ + // SPACK-SET: Found HIP installation: [[DIR]]/hip-4.0.0-abcd, version 4.0.20214-a2917cd + // SPACK-SET: "-triple" "amdgcn-amd-amdhsa" + // SPACK-SET-SAME: "-mlink-builtin-bitcode" "[[DIR]]/llvm-amdgpu-4.0.0-ieagcs7inf7runpyfvepqkurasoglq4z/amdgcn/bitcode/hip.bc" +-// SPACK-SET-SAME: "-internal-isystem" "[[DIR]]/hip-4.0.0-abcd/include" ++// SPACK-SET-SAME: "-idirafter" "[[DIR]]/hip-4.0.0-abcd/include" + + // SPACK-MISS: InstalledDir: [[DIR:.*]]/llvm-amdgpu-4.0.0-ieagcs7inf7runpyfvepqkurasoglq4z/bin + // SPACK-MISS-DAG: SPACK package hip-4.0.0 not found at [[DIR]] + // SPACK-MISS-NOT: Found HIP installation: [[DIR]]/hip-4.0.0-5f63slrursbrvfe2txrrjkynbsywsob5, version 4.0.20214-a2917cd +-// SPACK-MISS-NOT: "-internal-isystem" "[[DIR]]/hip-4.0.0-5f63slrursbrvfe2txrrjkynbsywsob5/include" ++// SPACK-MISS-NOT: "-idirafter" "[[DIR]]/hip-4.0.0-5f63slrursbrvfe2txrrjkynbsywsob5/include" + + // SPACK-MISS-SILENT-NOT: SPACK package hip-{{.*}} not found at + // SPACK-MISS-SILENT-NOT: Found HIP installation +-- +2.35.1 + diff --git a/clang.spec b/clang.spec index c3ccf43..9dc6a9c 100644 --- a/clang.spec +++ b/clang.spec @@ -41,7 +41,7 @@ Name: %pkg_name Version: %{clang_version}%{?rc_ver:~rc%{rc_ver}} -Release: 1%{?dist} +Release: 2%{?dist} Summary: A C language family front-end for LLVM License: NCSA @@ -68,6 +68,8 @@ Patch5: 0001-Work-around-gcc-miscompile.patch # https://github.com/llvm/llvm-project/commit/fed96f31bb5b68f77dd617ee8e698dd8171ee71b Patch6: m-branch-protection.patch Patch7: 0010-PATCH-clang-Produce-DWARF4-by-default.patch +# This is cherry-picked from trunk and can be dropped in LLVM 15 +Patch8: 0001-HIP-Fix-HIP-include-path.patch # Patches for clang-tools-extra # See https://reviews.llvm.org/D120301 @@ -595,6 +597,9 @@ false %endif %changelog +* Mon Apr 04 2022 Jeremy Newton - 14.0.0-2 +- Add patch for HIP (cherry-picked from llvm trunk, to be LLVM15) + * Wed Mar 23 2022 Timm Bäder - 14.0.0-1 - Update to 14.0.0