diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 04076147dbe84..b316da8058366 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -4624,7 +4624,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, } // Turn on Dead Parameter Elimination Optimization with early optimizations - if (!RawTriple.isNVPTX() && + if (!(RawTriple.isNVPTX() || RawTriple.isAMDGCN()) && Args.hasFlag(options::OPT_fsycl_dead_args_optimization, options::OPT_fno_sycl_dead_args_optimization, false)) CmdArgs.push_back("-fenable-sycl-dae"); @@ -8856,7 +8856,8 @@ void SYCLPostLink::ConstructJob(Compilation &C, const JobAction &JA, // -fsycl-device-code-split=auto // Turn on Dead Parameter Elimination Optimization with early optimizations - if (!getToolChain().getTriple().isNVPTX() && + if (!(getToolChain().getTriple().isNVPTX() || + getToolChain().getTriple().isAMDGCN()) && TCArgs.hasFlag(options::OPT_fsycl_dead_args_optimization, options::OPT_fno_sycl_dead_args_optimization, false)) addArgs(CmdArgs, TCArgs, {"-emit-param-info"}); diff --git a/clang/test/Driver/sycl-triple-dae-flags.cpp b/clang/test/Driver/sycl-triple-dae-flags.cpp new file mode 100644 index 0000000000000..89f4f06c1b317 --- /dev/null +++ b/clang/test/Driver/sycl-triple-dae-flags.cpp @@ -0,0 +1,12 @@ +// RUN: %clangxx -### -fsycl -fsycl-targets=nvptx64-nvidia-cuda-sycldevice -fsycl-dead-args-optimization %s 2> %t.cuda.out +// RUN: FileCheck %s --input-file %t.cuda.out +// +// RUN: %clangxx -### -fsycl -fsycl-targets=amdgcn-amd-amdhsa-sycldevice -fsycl-dead-args-optimization %s 2> %t.rocm.out +// RUN: FileCheck %s --input-file %t.rocm.out +// CHECK-NOT: -fenable-sycl-dae +// CHECK-NOT: -emit-param-info +// +// RUN: %clangxx -### -fsycl -fsycl-targets=spir64-unknown-unknown-sycldevice -fsycl-dead-args-optimization %s 2> %t.out +// RUN: FileCheck %s --check-prefixes=CHECK-FENABLE,CHECK-EMIT --input-file %t.out +// CHECK-FENABLE: -fenable-sycl-dae +// CHECK-EMIT: -emit-param-info