[flang-commits] [flang] 7564cff - [Flang][Driver] Fix -foffload-device misspelling (#201857)
via flang-commits
flang-commits at lists.llvm.org
Sat Jun 6 06:33:17 PDT 2026
Author: Michael Kruse
Date: 2026-06-06T15:33:11+02:00
New Revision: 7564cffdad802e80a595b2b3ce032fab7656df35
URL: https://github.com/llvm/llvm-project/commit/7564cffdad802e80a595b2b3ce032fab7656df35
DIFF: https://github.com/llvm/llvm-project/commit/7564cffdad802e80a595b2b3ce032fab7656df35.diff
LOG: [Flang][Driver] Fix -foffload-device misspelling (#201857)
#200863 added a new `-foffload-device` argument for informing the
frontend that it compiling for the device-side (and as a consequence
must not overwrite any module files compiled for the host), but the
driver was mistakenly adding `-offload-device`.
Also fix the condition and add a regression test for the driver.
Added:
flang/test/Driver/offload-device.f90
Modified:
clang/lib/Driver/ToolChains/Flang.cpp
Removed:
################################################################################
diff --git a/clang/lib/Driver/ToolChains/Flang.cpp b/clang/lib/Driver/ToolChains/Flang.cpp
index ecdf5e46565b6..224ece3239efd 100644
--- a/clang/lib/Driver/ToolChains/Flang.cpp
+++ b/clang/lib/Driver/ToolChains/Flang.cpp
@@ -698,8 +698,8 @@ void Flang::addOffloadOptions(Compilation &C, const InputInfoList &Inputs,
// Tell the frontend when it is compiling for an offloading device, regardless
// of offloading programming model.
- if (IsHostOffloadingAction)
- CmdArgs.push_back("-offload-device");
+ if (JA.getOffloadingDeviceKind() > Action::OFK_Host)
+ CmdArgs.push_back("-foffload-device");
// Skips the primary input file, which is the input file that the compilation
// proccess will be executed upon (e.g. the host bitcode file) and
diff --git a/flang/test/Driver/offload-device.f90 b/flang/test/Driver/offload-device.f90
new file mode 100644
index 0000000000000..2bab35ff93d5b
--- /dev/null
+++ b/flang/test/Driver/offload-device.f90
@@ -0,0 +1,24 @@
+! -foffload-device tells the frontend we are compiling for the auxiliary target,
+! i.e. not the host device. Test for CUDA and OpenMP offloading modes.
+
+! RUN: %flang -target aarch64-linux-gnu --no-offloadlib --offload-arch=sm_80 --offload-arch=gfx90a %s -fopenmp -### 2>&1 | FileCheck %s --check-prefixes=CHECK,OPENMP
+! RUN: %flang -target aarch64-linux-gnu --no-offloadlib --offload-arch=sm_80 -xcuda %s -### 2>&1 | FileCheck %s --check-prefixes=CHECK,CUDA
+
+! Compiled as CUDA, device-compilation is done first
+! CUDA: flang{{(\.exe)?}}" "-fc1" "-triple" "nvptx64-nvidia-cuda"
+! CUDA-SAME: "-foffload-device"
+
+! Host invocation
+! CHECK: flang{{(\.exe)?}}" "-fc1" "-triple" "aarch64-unknown-linux-gnu"
+! CHECK-NOT: -foffload-device
+
+! Compiled as OpenMP, device-code is compiled after host-code compilation,
+! once for each --offload-arch argument
+! OPENMP: flang{{(\.exe)?}}" "-fc1" "-triple" "amdgcn-amd-amdhsa"
+! OPENMP-SAME: "-foffload-device"
+! OPENMP: flang{{(\.exe)?}}" "-fc1" "-triple" "nvptx64-nvidia-cuda"
+! OPENMP-SAME: "-foffload-device"
+
+
+module offload_device
+end module
More information about the flang-commits
mailing list