aboutsummaryrefslogtreecommitdiff
path: root/flang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorArnamoy Bhattacharyya <arnamoy10@gmail.com>2021-03-11 07:35:45 -0500
committerArnamoy Bhattacharyya <arnamoy10@gmail.com>2021-03-11 08:04:37 -0500
commit1fd4beecc8bb1148123265a63e0bff92b626c4a3 (patch)
treedebf3afacc400e1ce615a111966391658665d2ed /flang/lib/Frontend/CompilerInvocation.cpp
parentcec62ae28a5fc5698a1b720a67187972c8e125cb (diff)
downloadllvm-1fd4beecc8bb1148123265a63e0bff92b626c4a3.zip
llvm-1fd4beecc8bb1148123265a63e0bff92b626c4a3.tar.gz
llvm-1fd4beecc8bb1148123265a63e0bff92b626c4a3.tar.bz2
[flang][driver] Add -fdebug-module-writer option
Diffstat (limited to 'flang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r--flang/lib/Frontend/CompilerInvocation.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/flang/lib/Frontend/CompilerInvocation.cpp b/flang/lib/Frontend/CompilerInvocation.cpp
index 1764970..1271cd3 100644
--- a/flang/lib/Frontend/CompilerInvocation.cpp
+++ b/flang/lib/Frontend/CompilerInvocation.cpp
@@ -306,9 +306,10 @@ static void parsePreprocessorArgs(
/// Parses all semantic related arguments and populates the variables
/// options accordingly.
-static void parseSemaArgs(std::string &moduleDir, llvm::opt::ArgList &args,
+static void parseSemaArgs(CompilerInvocation &res, llvm::opt::ArgList &args,
clang::DiagnosticsEngine &diags) {
+ // -J/module-dir option
auto moduleDirList =
args.getAllArgValues(clang::driver::options::OPT_module_dir);
// User can only specify -J/-module-dir once
@@ -320,7 +321,12 @@ static void parseSemaArgs(std::string &moduleDir, llvm::opt::ArgList &args,
diags.Report(diagID);
}
if (moduleDirList.size() == 1)
- moduleDir = moduleDirList[0];
+ res.SetModuleDir(moduleDirList[0]);
+
+ // -fdebug-module-writer option
+ if (args.hasArg(clang::driver::options::OPT_fdebug_module_writer)) {
+ res.SetDebugModuleDir(true);
+ }
}
/// Parses all Dialect related arguments and populates the variables
@@ -395,7 +401,7 @@ bool CompilerInvocation::CreateFromArgs(CompilerInvocation &res,
// Parse the preprocessor args
parsePreprocessorArgs(res.preprocessorOpts(), args);
// Parse semantic args
- parseSemaArgs(res.moduleDir(), args, diags);
+ parseSemaArgs(res, args, diags);
// Parse dialect arguments
parseDialectArgs(res, args, diags);
@@ -511,7 +517,6 @@ void CompilerInvocation::setSemanticsOpts(
semanticsContext_ = std::make_unique<semantics::SemanticsContext>(
defaultKinds(), fortranOptions.features, allCookedSources);
- auto &moduleDirJ = moduleDir();
- semanticsContext_->set_moduleDirectory(moduleDirJ)
+ semanticsContext_->set_moduleDirectory(moduleDir())
.set_searchDirectories(fortranOptions.searchDirectories);
}