Author: Matt Arsenault Date: 2020-05-14T12:33:31-04:00 New Revision: 235fb7dc24b1cf7034dfc76bb853ffb4ac5dec5d
URL: https://github.com/llvm/llvm-project/commit/235fb7dc24b1cf7034dfc76bb853ffb4ac5dec5d DIFF: https://github.com/llvm/llvm-project/commit/235fb7dc24b1cf7034dfc76bb853ffb4ac5dec5d.diff LOG: AMDGPU/OpenCL: Accept -nostdlib in place of -nogpulib -nogpulib makes sense when there is a host (where -nostdlib would apply) and offload target. Accept nostdlib when there is no offload target as an alias. Added: clang/test/Driver/rocm-detect.hip Modified: clang/lib/Driver/ToolChains/AMDGPU.cpp clang/test/Driver/rocm-not-found.cl Removed: ################################################################################ diff --git a/clang/lib/Driver/ToolChains/AMDGPU.cpp b/clang/lib/Driver/ToolChains/AMDGPU.cpp index fd81fec5f452..193ccad98f52 100644 --- a/clang/lib/Driver/ToolChains/AMDGPU.cpp +++ b/clang/lib/Driver/ToolChains/AMDGPU.cpp @@ -361,6 +361,12 @@ void ROCMToolChain::addClangTargetOptions( AMDGPUToolChain::addClangTargetOptions(DriverArgs, CC1Args, DeviceOffloadingKind); + // For the OpenCL case where there is no offload target, accept -nostdlib to + // disable bitcode linking. + if (DeviceOffloadingKind == Action::OFK_None && + DriverArgs.hasArg(options::OPT_nostdlib)) + return; + if (DriverArgs.hasArg(options::OPT_nogpulib)) return; diff --git a/clang/test/Driver/rocm-detect.hip b/clang/test/Driver/rocm-detect.hip new file mode 100644 index 000000000000..82ed7138098a --- /dev/null +++ b/clang/test/Driver/rocm-detect.hip @@ -0,0 +1,27 @@ +// REQUIRES: clang-driver +// REQUIRES: x86-registered-target +// REQUIRES: amdgpu-registered-target + +// Make sure the appropriate device specific library is available. + +// We don't include every target in the test directory, so just pick a valid +// target not included in the test. + +// RUN: %clang -### -v -target x86_64-linux-gnu --cuda-gpu-arch=gfx902 \ +// RUN: --rocm-path=%S/Inputs/rocm-device-libs %s 2>&1 \ +// RUN: | FileCheck -check-prefixes=COMMON,GFX902-DEFAULTLIBS %s + +// Should not interpret -nostdlib as disabling offload libraries. +// RUN: %clang -### -v -target x86_64-linux-gnu --cuda-gpu-arch=gfx902 -nostdlib \ +// RUN: --rocm-path=%S/Inputs/rocm-device-libs %s 2>&1 \ +// RUN: | FileCheck -check-prefixes=COMMON,GFX902-DEFAULTLIBS %s + + +// RUN: %clang -### -v -target x86_64-linux-gnu --cuda-gpu-arch=gfx902 -nogpulib \ +// RUN: --rocm-path=%S/Inputs/rocm-device-libs %s 2>&1 \ +// RUN: | FileCheck -check-prefixes=COMMON,GFX902,NODEFAULTLIBS %s + + +// GFX902-DEFAULTLIBS: error: cannot find device library for gfx902. Provide path to diff erent ROCm installation via --rocm-path, or pass -nogpulib to build without linking default libraries. + +// NODEFAULTLIBS-NOT: error: cannot find diff --git a/clang/test/Driver/rocm-not-found.cl b/clang/test/Driver/rocm-not-found.cl index 49b6c7efcf99..8ecc4b0ef105 100644 --- a/clang/test/Driver/rocm-not-found.cl +++ b/clang/test/Driver/rocm-not-found.cl @@ -7,5 +7,7 @@ // RUN: %clang -### --rocm-path=%s/no-rocm-there -target amdgcn--amdhsa %s 2>&1 | FileCheck %s --check-prefix ERR // ERR: cannot find ROCm installation. Provide its path via --rocm-path, or pass -nogpulib. +// Accept nogpulib or nostdlib for OpenCL. // RUN: %clang -### -nogpulib --rocm-path=%s/no-rocm-there %s 2>&1 | FileCheck %s --check-prefix OK +// RUN: %clang -### -nostdlib --rocm-path=%s/no-rocm-there %s 2>&1 | FileCheck %s --check-prefix OK // OK-NOT: cannot find ROCm installation. _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits