diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5476,9 +5476,14 @@ // 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 --- a/clang/lib/Driver/ToolChains/HIP.cpp +++ b/clang/lib/Driver/ToolChains/HIP.cpp @@ -268,10 +268,6 @@ 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 --- 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