Author: Yaxun (Sam) Liu Date: 2023-07-03T16:19:25-04:00 New Revision: 4eef528853418fd72bffbb139d953520bb7b4c73
URL: https://github.com/llvm/llvm-project/commit/4eef528853418fd72bffbb139d953520bb7b4c73 DIFF: https://github.com/llvm/llvm-project/commit/4eef528853418fd72bffbb139d953520bb7b4c73.diff LOG: [HIP] Pass -fno-hip-fp32-correctly-rounded-divide-sqrt to clang -cc1 -fno-hip-fp32-correctly-rounded-divide-sqrt affects clang codegen and should be passed to clang -cc1 by clang driver. Fixes: https://github.com/llvm/llvm-project/issues/63653 Reviewed by: Matt Arsenault Differential Revision: https://reviews.llvm.org/D154385 Added: Modified: clang/lib/Driver/ToolChains/Clang.cpp clang/test/Driver/hip-options.hip Removed: ################################################################################ diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 6f3d86b900edfb..f85584b3335e4b 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -7223,6 +7223,11 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, } } + if (IsHIPDevice) + Args.addOptOutFlag(CmdArgs, + options::OPT_fhip_fp32_correctly_rounded_divide_sqrt, + options::OPT_fno_hip_fp32_correctly_rounded_divide_sqrt); + // OpenMP offloading device jobs take the argument -fopenmp-host-ir-file-path // to specify the result of the compile phase on the host, so the meaningful // device declarations can be identified. Also, -fopenmp-is-device is passed diff --git a/clang/test/Driver/hip-options.hip b/clang/test/Driver/hip-options.hip index 7a6965caf5e001..edbe4ff3acbedf 100644 --- a/clang/test/Driver/hip-options.hip +++ b/clang/test/Driver/hip-options.hip @@ -154,3 +154,18 @@ // RUN: %clang -### -nogpuinc -nogpulib -mamdgpu-ieee -mno-amdgpu-ieee -ffast-math \ // RUN: --cuda-gpu-arch=gfx906 %s 2>&1 | FileCheck -check-prefixes=IEEE-OFF-NEG %s // IEEE-OFF-NEG-NOT: clang{{.*}} "-triple" "amdgcn-amd-amdhsa" {{.*}} "-mamdgpu-ieee" + +// Check -fno-hip-fp32-correctly-rounded-divide-sqrt is passed to -cc1 but +// (default) -fhip-fp32-correctly-rounded-divide-sqrt is not. + +// RUN: %clang -### -nogpuinc -nogpulib -fno-hip-fp32-correctly-rounded-divide-sqrt \ +// RUN: --cuda-gpu-arch=gfx906 %s 2>&1 | FileCheck -check-prefixes=NOCRDS %s +// NOCRDS: clang{{.*}} "-triple" "amdgcn-amd-amdhsa" {{.*}} "-fno-hip-fp32-correctly-rounded-divide-sqrt" + +// RUN: %clang -### -nogpuinc -nogpulib \ +// RUN: --cuda-gpu-arch=gfx906 %s 2>&1 | FileCheck -check-prefixes=CRDS %s +// CRDS-NOT: "-f{{(no-)?}}hip-fp32-correctly-rounded-divide-sqrt" + +// RUN: %clang -### -nogpuinc -nogpulib -fhip-fp32-correctly-rounded-divide-sqrt \ +// RUN: --cuda-gpu-arch=gfx906 %s 2>&1 | FileCheck -check-prefixes=CRDS %s +// CRDS-NOT: "-f{{(no-)?}}hip-fp32-correctly-rounded-divide-sqrt" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits