From e372c1d7624e2402a5f91a640780fb32649922b6 Mon Sep 17 00:00:00 2001 From: "Yaxun (Sam) Liu" Date: Tue, 29 Sep 2020 23:52:03 -0400 Subject: [PATCH] [HIP] Fix -fgpu-allow-device-init option The option needs to be passed to both host and device compilation. Differential Revision: https://reviews.llvm.org/D88550 --- clang/lib/Driver/ToolChains/Clang.cpp | 11 ++++++++--- clang/lib/Driver/ToolChains/HIP.cpp | 4 ---- clang/test/Driver/hip-options.hip | 5 +++++ 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 272a498..f6eeb53 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5476,9 +5476,14 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, // Forward -cl options to -cc1 RenderOpenCLOptions(Args, CmdArgs); - if (IsHIP && Args.hasFlag(options::OPT_fhip_new_launch_api, - options::OPT_fno_hip_new_launch_api, true)) - CmdArgs.push_back("-fhip-new-launch-api"); + if (IsHIP) { + if (Args.hasFlag(options::OPT_fhip_new_launch_api, + options::OPT_fno_hip_new_launch_api, true)) + CmdArgs.push_back("-fhip-new-launch-api"); + if (Args.hasFlag(options::OPT_fgpu_allow_device_init, + options::OPT_fno_gpu_allow_device_init, false)) + CmdArgs.push_back("-fgpu-allow-device-init"); + } if (Arg *A = Args.getLastArg(options::OPT_fcf_protection_EQ)) { CmdArgs.push_back( diff --git a/clang/lib/Driver/ToolChains/HIP.cpp b/clang/lib/Driver/ToolChains/HIP.cpp index f1044f3..4d1e0f9 100644 --- a/clang/lib/Driver/ToolChains/HIP.cpp +++ b/clang/lib/Driver/ToolChains/HIP.cpp @@ -268,10 +268,6 @@ void HIPToolChain::addClangTargetOptions( CC1Args.push_back(DriverArgs.MakeArgStringRef(ArgStr)); } - if (DriverArgs.hasFlag(options::OPT_fgpu_allow_device_init, - options::OPT_fno_gpu_allow_device_init, false)) - CC1Args.push_back("-fgpu-allow-device-init"); - CC1Args.push_back("-fcuda-allow-variadic-functions"); // Default to "hidden" visibility, as object level linking will not be diff --git a/clang/test/Driver/hip-options.hip b/clang/test/Driver/hip-options.hip index a7a6e02..fa7b019 100644 --- a/clang/test/Driver/hip-options.hip +++ b/clang/test/Driver/hip-options.hip @@ -9,6 +9,11 @@ // CHECK: clang{{.*}}" "-cc1" {{.*}} "-fcuda-is-device" // CHECK-SAME: "--gpu-max-threads-per-block=1024" +// RUN: %clang -### -nogpuinc -nogpulib -fgpu-allow-device-init \ +// RUN: %s 2>&1 | FileCheck -check-prefix=DEVINIT %s +// DEVINIT: clang{{.*}}" "-cc1" {{.*}}"-fgpu-allow-device-init" +// DEVINIT: clang{{.*}}" "-cc1" {{.*}}"-fgpu-allow-device-init" + // RUN: %clang -### -x hip -target x86_64-pc-windows-msvc -fms-extensions \ // RUN: -mllvm -amdgpu-early-inline-all=true %s 2>&1 | \ // RUN: FileCheck -check-prefix=MLLVM %s -- 2.7.4