Skip to content

Commit 6899cd4

Browse files
committed
-fransics-path to bbc
1 parent 9ff25cf commit 6899cd4

File tree

7 files changed

+27
-23
lines changed

7 files changed

+27
-23
lines changed

clang/include/clang/Driver/Driver.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,6 @@ class Driver {
188188
/// The path to the compiler resource directory.
189189
std::string ResourceDir;
190190

191-
192-
193191
/// System directory for config files.
194192
std::string SystemConfigDir;
195193

clang/lib/Driver/ToolChains/Flang.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -958,13 +958,13 @@ void Flang::ConstructJob(Compilation &C, const JobAction &JA,
958958
CmdArgs.push_back(D.ResourceDir.c_str());
959959

960960

961-
#if 1
961+
962962
// Default intrinsic module dirs must be added after any user-provided -fintrinsic-modules-path to have lower precedence
963963
if ( auto IntrModPath = TC.getDefaultIntrinsicModuleDir()) {
964964
CmdArgs.push_back("-fintrinsic-modules-path");
965965
CmdArgs.push_back( Args.MakeArgString(*IntrModPath));
966966
}
967-
#endif
967+
968968

969969

970970
// Offloading related options

cmake/Modules/GetToolchainDirs.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ function (get_toolchain_library_subdir outvar)
4747
endfunction ()
4848

4949

50+
# Corresponds to Flang's ToolChain::getDefaultIntrinsicModuleDir().
5051
function (get_toolchain_module_subdir outvar)
5152
set(outval "finclude")
5253

flang/include/flang/Parser/options.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,7 @@ struct Options {
2727
int fixedFormColumns{72};
2828
common::LanguageFeatureControl features;
2929

30-
/// Search paths from -J/-module-dir
31-
/// Only a single path is supported which is also the location for writing modules.
30+
/// Search paths from -I/-J/-module-dir/-fintrinsic-modules-path for
3231
std::vector<std::string> searchDirectories;
3332

3433
/// Search paths from -fintrinsic-modules-path

flang/lib/Frontend/CompilerInvocation.cpp

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -916,7 +916,6 @@ static void parsePreprocessorArgs(Fortran::frontend::PreprocessorOptions &opts,
916916
for (const auto *currentArg : args.filtered(clang::driver::options::OPT_I))
917917
opts.searchDirectoriesFromDashI.emplace_back(currentArg->getValue());
918918

919-
920919
// Prepend the ordered list of -fintrinsic-modules-path
921920
// to the default location to search.
922921
for (const auto *currentArg :
@@ -1502,13 +1501,11 @@ bool CompilerInvocation::createFromArgs(
15021501
success = false;
15031502
}
15041503

1505-
// Default resource dir
1506-
auto mainExe = llvm::sys::fs::getMainExecutable(argv0, nullptr);
1507-
invoc.resourceDir = clang::driver::Driver::GetResourcesPath(argv0);
1508-
1509-
if (const llvm::opt::Arg *a =
1510-
args.getLastArg(clang::driver::options::OPT_resource_dir))
1511-
invoc.resourceDir = a->getValue();
1504+
// User-specified or default resource dir
1505+
if (const llvm::opt::Arg *a = args.getLastArg(clang::driver::options::OPT_resource_dir))
1506+
invoc.resourceDir = a->getValue();
1507+
else
1508+
clang::driver::Driver::GetResourcesPath(llvm::sys::fs::getMainExecutable(argv0, nullptr));
15121509

15131510
// -flang-experimental-hlfir
15141511
if (args.hasArg(clang::driver::options::OPT_flang_experimental_hlfir) ||
@@ -1729,9 +1726,6 @@ void CompilerInvocation::setDefaultPredefinitions() {
17291726
}
17301727
}
17311728

1732-
1733-
1734-
17351729
void CompilerInvocation::setFortranOpts(const llvm::TargetMachine &targetMachine) {
17361730
auto &fortranOptions = getFortranOpts();
17371731
const auto &frontendOptions = getFrontendOpts();

flang/test/lit.cfg.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,6 @@ def get_default_intrinsic_module_path():
149149

150150
if not flang_dir:
151151
lit_config.fatal(f"Couldn't find the intrinsic module dir for Flang using {flang_exe}" )
152-
153-
154-
155-
156152
return flang_dir
157153

158154
intrinsics_search_args = []
@@ -183,6 +179,12 @@ def get_default_intrinsic_module_path():
183179
extra_args=["-fc1"] + intrinsics_search_args+extra_intrinsics_search_args,
184180
unresolved="fatal",
185181
),
182+
ToolSubst(
183+
"bbc",
184+
command=FindTool("bbc"),
185+
extra_args= intrinsics_search_args+extra_intrinsics_search_args,
186+
unresolved="fatal",
187+
)
186188
]
187189

188190
# Flang has several unimplemented features. TODO messages are used to mark

flang/tools/bbc/bbc.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ static llvm::cl::alias includeAlias("module-directory",
9292
llvm::cl::desc("module search directory"),
9393
llvm::cl::aliasopt(includeDirs));
9494

95+
96+
9597
static llvm::cl::list<std::string>
9698
intrinsicIncludeDirs("J", llvm::cl::desc("intrinsic module search paths"));
9799

@@ -100,6 +102,10 @@ static llvm::cl::alias
100102
llvm::cl::desc("intrinsic module directory"),
101103
llvm::cl::aliasopt(intrinsicIncludeDirs));
102104

105+
static llvm::cl::alias intrinsicModulePath("fintrinsic-modules-path", llvm::cl::desc("intrinsic module search paths"), llvm::cl::aliasopt(intrinsicIncludeDirs));
106+
107+
108+
103109
static llvm::cl::opt<std::string>
104110
moduleDir("module", llvm::cl::desc("module output directory (default .)"),
105111
llvm::cl::init("."));
@@ -570,10 +576,13 @@ int main(int argc, char **argv) {
570576
ProgramName programPrefix;
571577
programPrefix = argv[0] + ": "s;
572578

573-
std::vector <std::string> intrinsicsDirs ( intrinsicIncludeDirs.begin(), intrinsicIncludeDirs.end());
579+
//std::vector <std::string> intrinsicsDirs ( intrinsicIncludeDirs.begin(), intrinsicIncludeDirs.end());
574580

575581
if (includeDirs.size() == 0) {
576582
includeDirs.push_back(".");
583+
584+
585+
#if 0
577586
// Default Fortran modules should be installed in finclude/<target-triple> of the resource directory
578587

579588

@@ -603,6 +612,7 @@ vfs->makeAbsolute (resourceDir);
603612
// llvm::errs() << "defaultIntrinsicsDir: " << defaultIntrinsicsDir << "\n";
604613
if (defaultIntrinsicsDir)
605614
intrinsicsDirs.push_back(*defaultIntrinsicsDir);
615+
#endif
606616
}
607617

608618
Fortran::parser::Options options;
@@ -682,7 +692,7 @@ vfs->makeAbsolute (resourceDir);
682692
semanticsContext.set_moduleDirectory(moduleDir)
683693
.set_moduleFileSuffix(moduleSuffix)
684694
.set_searchDirectories(includeDirs)
685-
.set_intrinsicModuleDirectories(intrinsicsDirs)
695+
.set_intrinsicModuleDirectories(intrinsicIncludeDirs)
686696
.set_warnOnNonstandardUsage(warnStdViolation)
687697
.set_warningsAreErrors(warnIsError);
688698

0 commit comments

Comments
 (0)