[flang-commits] [clang] [flang] [Flang][Driver] Remove compatibility module search paths (PR #200372)
Michael Kruse via flang-commits
flang-commits at lists.llvm.org
Fri May 29 03:47:57 PDT 2026
https://github.com/Meinersbur created https://github.com/llvm/llvm-project/pull/200372
#196558 added target-dependent paths to the default intrinsic module path list. With #171515 the modules now are now emitted to the new search path location and the old search path in `<PREFIX>/include/flang` should not be needed anymore.
Also remove the fallback to the host's omp_lib.mod for device-side compilation. The device should have its own `omp_lib.mod`.
>From 617b2e379a89d3d2f51b5df19c4432a9fc6383bf Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Fri, 29 May 2026 11:53:51 +0200
Subject: [PATCH] [Flang] Remove temporary module search paths
---
clang/lib/Driver/ToolChains/Flang.cpp | 23 -----------------------
flang/lib/Frontend/CompilerInvocation.cpp | 14 --------------
2 files changed, 37 deletions(-)
diff --git a/clang/lib/Driver/ToolChains/Flang.cpp b/clang/lib/Driver/ToolChains/Flang.cpp
index 4c722a2e021eb..b61bac095808e 100644
--- a/clang/lib/Driver/ToolChains/Flang.cpp
+++ b/clang/lib/Driver/ToolChains/Flang.cpp
@@ -1183,29 +1183,6 @@ void Flang::ConstructJob(Compilation &C, const JobAction &JA,
CmdArgs.push_back(Args.MakeArgString(*IntrModPath));
}
- // Ideally, every target triple has its own set of builtin modules since they
- // are compiled with platform-dependent conditionals such as `#if __x86_64__`.
- // However, getting the builtin modules for offload targets requires building
- // the flang-rt and openmp for those targets as well:
- // -DLLVM_RUNTIME_TARGETS=default;amdgcn-amd-amdhsa;nvptx64-nvidia-cuda.
- // To reduce friction when build systems have not yet been updated, we also
- // add the host's builtin module to the search path (with lower priority), in
- // case a module file has not been found for the offload targets itself.
- // FIXME: This workaround may mix module files targeting different triples and
- // should eventually be removed.
- auto &&HostTCs =
- C.getOffloadToolChains<clang::driver::OffloadAction ::OFK_Host>();
- for (auto [OKind, HostTC] : llvm::make_range(HostTCs.first, HostTCs.second)) {
- if (HostTC == &TC)
- continue;
-
- if (std::optional<std::string> IntrModPath =
- HostTC->getDefaultIntrinsicModuleDir()) {
- CmdArgs.push_back("-fintrinsic-modules-path");
- CmdArgs.push_back(Args.MakeArgString(*IntrModPath));
- }
- }
-
// Offloading related options
addOffloadOptions(C, Inputs, JA, Args, CmdArgs);
diff --git a/flang/lib/Frontend/CompilerInvocation.cpp b/flang/lib/Frontend/CompilerInvocation.cpp
index 9853fc600ff6a..eb79f3d9f7f6e 100644
--- a/flang/lib/Frontend/CompilerInvocation.cpp
+++ b/flang/lib/Frontend/CompilerInvocation.cpp
@@ -919,16 +919,6 @@ static bool parseFrontendArgs(FrontendOptions &opts, llvm::opt::ArgList &args,
return !diags.hasUncompilableErrorOccurred();
}
-// Generate the path to look for intrinsic modules
-static std::string getIntrinsicDir(const char *argv) {
- // TODO: Find a system independent API
- llvm::SmallString<128> driverPath;
- driverPath.assign(llvm::sys::fs::getMainExecutable(argv, nullptr));
- llvm::sys::path::remove_filename(driverPath);
- driverPath.append("/../include/flang/");
- return std::string(driverPath);
-}
-
// Generate the path to look for OpenMP headers
static std::string getOpenMPHeadersDir(const char *argv) {
llvm::SmallString<128> includePath;
@@ -1916,10 +1906,6 @@ void CompilerInvocation::setFortranOpts() {
preprocessorOptions.searchDirectoriesFromIntrModPath.begin(),
preprocessorOptions.searchDirectoriesFromIntrModPath.end());
- // Add the default intrinsic module directory
- fortranOptions.intrinsicModuleDirectories.emplace_back(
- getIntrinsicDir(getArgv0()));
-
// Add the directory supplied through -J/-module-dir to the list of search
// directories
if (moduleDirJ != ".")
More information about the flang-commits
mailing list