diff options
Diffstat (limited to 'flang/lib/Semantics/mod-file.cpp')
-rw-r--r-- | flang/lib/Semantics/mod-file.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/flang/lib/Semantics/mod-file.cpp b/flang/lib/Semantics/mod-file.cpp index 2ba8918..d97b817 100644 --- a/flang/lib/Semantics/mod-file.cpp +++ b/flang/lib/Semantics/mod-file.cpp @@ -518,8 +518,14 @@ void ModFileWriter::PutGeneric(const Symbol &symbol) { void ModFileWriter::PutUse(const Symbol &symbol) { auto &details{symbol.get<UseDetails>()}; auto &use{details.symbol()}; - uses_ << "use " << GetUsedModule(details).name(); - PutGenericName(uses_ << ",only:", symbol); + const Symbol &module{GetUsedModule(details)}; + if (use.owner().parent().IsIntrinsicModules()) { + uses_ << "use,intrinsic::"; + } else { + uses_ << "use "; + } + uses_ << module.name() << ",only:"; + PutGenericName(uses_, symbol); // Can have intrinsic op with different local-name and use-name // (e.g. `operator(<)` and `operator(.lt.)`) but rename is not allowed if (!IsIntrinsicOp(symbol) && use.name() != symbol.name()) { @@ -953,6 +959,7 @@ Scope *ModFileReader::Read(const SourceName &name, std::remove(options.searchDirectories.begin(), options.searchDirectories.end(), dir); } + options.searchDirectories.insert(options.searchDirectories.begin(), "."s); } if (isIntrinsic.value_or(true)) { for (const auto &dir : context_.intrinsicModuleDirectories()) { |