[clang] 737c414 - Revert "[clang][flang][mlir] Support -frecord-command-line option (#102975)"
David Spickett via cfe-commits
cfe-commits at lists.llvm.org
Fri Sep 20 04:31:16 PDT 2024
Author: David Spickett
Date: 2024-09-20T11:30:50Z
New Revision: 737c414e1d9578e5037e68e3b3f6ddea507f8243
URL: https://github.com/llvm/llvm-project/commit/737c414e1d9578e5037e68e3b3f6ddea507f8243
DIFF: https://github.com/llvm/llvm-project/commit/737c414e1d9578e5037e68e3b3f6ddea507f8243.diff
LOG: Revert "[clang][flang][mlir] Support -frecord-command-line option (#102975)"
This reverts commit b3533a156da92262eb19429d8c12f53e87f5ccec.
It caused test failures in shared library builds:
https://lab.llvm.org/buildbot/#/builders/80/builds/3854
Added:
Modified:
clang/include/clang/Driver/Options.td
clang/lib/Driver/ToolChains/Clang.cpp
clang/lib/Driver/ToolChains/CommonArgs.cpp
clang/lib/Driver/ToolChains/CommonArgs.h
clang/lib/Driver/ToolChains/Flang.cpp
flang/include/flang/Frontend/CodeGenOptions.h
flang/include/flang/Lower/Bridge.h
flang/include/flang/Optimizer/Dialect/Support/FIRContext.h
flang/lib/Frontend/CompilerInvocation.cpp
flang/lib/Frontend/FrontendActions.cpp
flang/lib/Lower/Bridge.cpp
flang/lib/Optimizer/Dialect/Support/FIRContext.cpp
flang/tools/bbc/CMakeLists.txt
flang/tools/bbc/bbc.cpp
mlir/include/mlir/Dialect/LLVMIR/LLVMDialect.td
mlir/include/mlir/Target/LLVMIR/ModuleImport.h
mlir/include/mlir/Target/LLVMIR/ModuleTranslation.h
mlir/lib/Target/LLVMIR/ModuleImport.cpp
mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
Removed:
flang/test/Driver/frecord-command-line.f90
flang/test/Lower/record-command-line.f90
mlir/test/Target/LLVMIR/Import/commandline.ll
mlir/test/Target/LLVMIR/commandline.mlir
################################################################################
diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td
index 6c6759f19f9b34..376d7d4290c0bf 100644
--- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -1994,18 +1994,16 @@ def fparse_all_comments : Flag<["-"], "fparse-all-comments">, Group<f_clang_Grou
Visibility<[ClangOption, CC1Option]>,
MarshallingInfoFlag<LangOpts<"CommentOpts.ParseAllComments">>;
def frecord_command_line : Flag<["-"], "frecord-command-line">,
- DocBrief<[{Generate a section named ".GCC.command.line" containing the
+ DocBrief<[{Generate a section named ".GCC.command.line" containing the clang
driver command-line. After linking, the section may contain multiple command
lines, which will be individually terminated by null bytes. Separate arguments
within a command line are combined with spaces; spaces and backslashes within an
argument are escaped with backslashes. This format
diff ers from the format of
the equivalent section produced by GCC with the -frecord-gcc-switches flag.
This option is currently only supported on ELF targets.}]>,
- Group<f_Group>,
- Visibility<[ClangOption, CLOption, DXCOption, FlangOption]>;
+ Group<f_clang_Group>;
def fno_record_command_line : Flag<["-"], "fno-record-command-line">,
- Group<f_Group>,
- Visibility<[ClangOption, CLOption, DXCOption, FlangOption]>;
+ Group<f_clang_Group>;
def : Flag<["-"], "frecord-gcc-switches">, Alias<frecord_command_line>;
def : Flag<["-"], "fno-record-gcc-switches">, Alias<fno_record_command_line>;
def fcommon : Flag<["-"], "fcommon">, Group<f_Group>,
@@ -7149,9 +7147,6 @@ def mrelocation_model : Separate<["-"], "mrelocation-model">,
NormalizedValues<["Static", "PIC_", "ROPI", "RWPI", "ROPI_RWPI", "DynamicNoPIC"]>,
MarshallingInfoEnum<CodeGenOpts<"RelocationModel">, "PIC_">;
def debug_info_kind_EQ : Joined<["-"], "debug-info-kind=">;
-def record_command_line : Separate<["-"], "record-command-line">,
- HelpText<"The string to embed in the .LLVM.command.line section.">,
- MarshallingInfoString<CodeGenOpts<"RecordCommandLine">>;
} // let Visibility = [CC1Option, CC1AsOption, FC1Option]
@@ -7172,6 +7167,9 @@ def debugger_tuning_EQ : Joined<["-"], "debugger-tuning=">,
def dwarf_debug_flags : Separate<["-"], "dwarf-debug-flags">,
HelpText<"The string to embed in the Dwarf debug flags record.">,
MarshallingInfoString<CodeGenOpts<"DwarfDebugFlags">>;
+def record_command_line : Separate<["-"], "record-command-line">,
+ HelpText<"The string to embed in the .LLVM.command.line section.">,
+ MarshallingInfoString<CodeGenOpts<"RecordCommandLine">>;
def compress_debug_sections_EQ : Joined<["-", "--"], "compress-debug-sections=">,
HelpText<"DWARF debug sections compression type">, Values<"none,zlib,zstd">,
NormalizedValuesScope<"llvm::DebugCompressionType">, NormalizedValues<["None", "Zlib", "Zstd"]>,
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
index 0a2c7b67cc2f0f..0bab48caf1a5e2 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -94,6 +94,24 @@ static void CheckCodeGenerationOptions(const Driver &D, const ArgList &Args) {
<< "-static";
}
+// Add backslashes to escape spaces and other backslashes.
+// This is used for the space-separated argument list specified with
+// the -dwarf-debug-flags option.
+static void EscapeSpacesAndBackslashes(const char *Arg,
+ SmallVectorImpl<char> &Res) {
+ for (; *Arg; ++Arg) {
+ switch (*Arg) {
+ default:
+ break;
+ case ' ':
+ case '\\':
+ Res.push_back('\\');
+ break;
+ }
+ Res.push_back(*Arg);
+ }
+}
+
/// Apply \a Work on the current tool chain \a RegularToolChain and any other
/// offloading tool chain that is associated with the current action \a JA.
static void
@@ -7687,10 +7705,31 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
// Also record command line arguments into the debug info if
// -grecord-gcc-switches options is set on.
// By default, -gno-record-gcc-switches is set on and no recording.
- auto GRecordSwitches = false;
- auto FRecordSwitches = false;
- if (shouldRecordCommandLine(TC, Args, FRecordSwitches, GRecordSwitches)) {
- auto FlagsArgString = renderEscapedCommandLine(TC, Args);
+ auto GRecordSwitches =
+ Args.hasFlag(options::OPT_grecord_command_line,
+ options::OPT_gno_record_command_line, false);
+ auto FRecordSwitches =
+ Args.hasFlag(options::OPT_frecord_command_line,
+ options::OPT_fno_record_command_line, false);
+ if (FRecordSwitches && !Triple.isOSBinFormatELF() &&
+ !Triple.isOSBinFormatXCOFF() && !Triple.isOSBinFormatMachO())
+ D.Diag(diag::err_drv_unsupported_opt_for_target)
+ << Args.getLastArg(options::OPT_frecord_command_line)->getAsString(Args)
+ << TripleStr;
+ if (TC.UseDwarfDebugFlags() || GRecordSwitches || FRecordSwitches) {
+ ArgStringList OriginalArgs;
+ for (const auto &Arg : Args)
+ Arg->render(Args, OriginalArgs);
+
+ SmallString<256> Flags;
+ EscapeSpacesAndBackslashes(Exec, Flags);
+ for (const char *OriginalArg : OriginalArgs) {
+ SmallString<128> EscapedArg;
+ EscapeSpacesAndBackslashes(OriginalArg, EscapedArg);
+ Flags += " ";
+ Flags += EscapedArg;
+ }
+ auto FlagsArgString = Args.MakeArgString(Flags);
if (TC.UseDwarfDebugFlags() || GRecordSwitches) {
CmdArgs.push_back("-dwarf-debug-flags");
CmdArgs.push_back(FlagsArgString);
@@ -8690,10 +8729,10 @@ void ClangAs::ConstructJob(Compilation &C, const JobAction &JA,
SmallString<256> Flags;
const char *Exec = getToolChain().getDriver().getClangProgramPath();
- escapeSpacesAndBackslashes(Exec, Flags);
+ EscapeSpacesAndBackslashes(Exec, Flags);
for (const char *OriginalArg : OriginalArgs) {
SmallString<128> EscapedArg;
- escapeSpacesAndBackslashes(OriginalArg, EscapedArg);
+ EscapeSpacesAndBackslashes(OriginalArg, EscapedArg);
Flags += " ";
Flags += EscapedArg;
}
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp
index 102e5231d31608..043d9e48764439 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -2960,62 +2960,3 @@ void tools::addMCModel(const Driver &D, const llvm::opt::ArgList &Args,
}
}
}
-
-void tools::escapeSpacesAndBackslashes(const char *Arg,
- llvm::SmallVectorImpl<char> &Res) {
- for (; *Arg; ++Arg) {
- switch (*Arg) {
- default:
- break;
- case ' ':
- case '\\':
- Res.push_back('\\');
- break;
- }
- Res.push_back(*Arg);
- }
-}
-
-const char *tools::renderEscapedCommandLine(const ToolChain &TC,
- const llvm::opt::ArgList &Args) {
- const Driver &D = TC.getDriver();
- const char *Exec = D.getClangProgramPath();
-
- llvm::opt::ArgStringList OriginalArgs;
- for (const auto &Arg : Args)
- Arg->render(Args, OriginalArgs);
-
- llvm::SmallString<256> Flags;
- escapeSpacesAndBackslashes(Exec, Flags);
- for (const char *OriginalArg : OriginalArgs) {
- llvm::SmallString<128> EscapedArg;
- escapeSpacesAndBackslashes(OriginalArg, EscapedArg);
- Flags += " ";
- Flags += EscapedArg;
- }
-
- return Args.MakeArgString(Flags);
-}
-
-bool tools::shouldRecordCommandLine(const ToolChain &TC,
- const llvm::opt::ArgList &Args,
- bool &FRecordCommandLine,
- bool &GRecordCommandLine) {
- const Driver &D = TC.getDriver();
- const llvm::Triple &Triple = TC.getEffectiveTriple();
- const std::string &TripleStr = Triple.getTriple();
-
- FRecordCommandLine =
- Args.hasFlag(options::OPT_frecord_command_line,
- options::OPT_fno_record_command_line, false);
- GRecordCommandLine =
- Args.hasFlag(options::OPT_grecord_command_line,
- options::OPT_gno_record_command_line, false);
- if (FRecordCommandLine && !Triple.isOSBinFormatELF() &&
- !Triple.isOSBinFormatXCOFF() && !Triple.isOSBinFormatMachO())
- D.Diag(diag::err_drv_unsupported_opt_for_target)
- << Args.getLastArg(options::OPT_frecord_command_line)->getAsString(Args)
- << TripleStr;
-
- return FRecordCommandLine || TC.UseDwarfDebugFlags() || GRecordCommandLine;
-}
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.h b/clang/lib/Driver/ToolChains/CommonArgs.h
index e9b42bb872ed54..8695d3fe5b55b8 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.h
+++ b/clang/lib/Driver/ToolChains/CommonArgs.h
@@ -233,31 +233,6 @@ void addMCModel(const Driver &D, const llvm::opt::ArgList &Args,
const llvm::Reloc::Model &RelocationModel,
llvm::opt::ArgStringList &CmdArgs);
-/// Add backslashes to escape spaces and other backslashes.
-/// This is used for the space-separated argument list specified with
-/// the -dwarf-debug-flags option.
-void escapeSpacesAndBackslashes(const char *Arg,
- llvm::SmallVectorImpl<char> &Res);
-
-/// Join the args in the given ArgList, escape spaces and backslashes and
-/// return the joined string. This is used when saving the command line as a
-/// result of using either the -frecord-command-line or -grecord-command-line
-/// options. The lifetime of the returned c-string will match that of the Args
-/// argument.
-const char *renderEscapedCommandLine(const ToolChain &TC,
- const llvm::opt::ArgList &Args);
-
-/// Check if the command line should be recorded in the object file. This is
-/// done if either -frecord-command-line or -grecord-command-line options have
-/// been passed. This also does some error checking since -frecord-command-line
-/// is currently only supported on ELF platforms. The last two boolean
-/// arguments are out parameters and will be set depending on the command
-/// line options that were passed.
-bool shouldRecordCommandLine(const ToolChain &TC,
- const llvm::opt::ArgList &Args,
- bool &FRecordCommandLine,
- bool &GRecordCommandLine);
-
} // end namespace tools
} // end namespace driver
} // end namespace clang
diff --git a/clang/lib/Driver/ToolChains/Flang.cpp b/clang/lib/Driver/ToolChains/Flang.cpp
index 65c29b3dd7f658..6ce79d27e98c48 100644
--- a/clang/lib/Driver/ToolChains/Flang.cpp
+++ b/clang/lib/Driver/ToolChains/Flang.cpp
@@ -885,20 +885,6 @@ void Flang::ConstructJob(Compilation &C, const JobAction &JA,
addDashXForInput(Args, Input, CmdArgs);
- bool FRecordCmdLine = false;
- bool GRecordCmdLine = false;
- if (shouldRecordCommandLine(TC, Args, FRecordCmdLine, GRecordCmdLine)) {
- const char *CmdLine = renderEscapedCommandLine(TC, Args);
- if (FRecordCmdLine) {
- CmdArgs.push_back("-record-command-line");
- CmdArgs.push_back(CmdLine);
- }
- if (TC.UseDwarfDebugFlags() || GRecordCmdLine) {
- CmdArgs.push_back("-dwarf-debug-flags");
- CmdArgs.push_back(CmdLine);
- }
- }
-
CmdArgs.push_back(Input.getFilename());
// TODO: Replace flang-new with flang once the new driver replaces the
diff --git a/flang/include/flang/Frontend/CodeGenOptions.h b/flang/include/flang/Frontend/CodeGenOptions.h
index f19943335737b9..ac7fcbcba4f747 100644
--- a/flang/include/flang/Frontend/CodeGenOptions.h
+++ b/flang/include/flang/Frontend/CodeGenOptions.h
@@ -63,9 +63,6 @@ class CodeGenOptions : public CodeGenOptionsBase {
/// The directory where temp files are stored if specified by -save-temps
std::optional<std::string> SaveTempsDir;
- /// The string containing the commandline for the llvm.commandline metadata.
- std::optional<std::string> RecordCommandLine;
-
/// The name of the file to which the backend should save YAML optimization
/// records.
std::string OptRecordFile;
diff --git a/flang/include/flang/Lower/Bridge.h b/flang/include/flang/Lower/Bridge.h
index 8ea5ed52e28218..4379ed512cdf0a 100644
--- a/flang/include/flang/Lower/Bridge.h
+++ b/flang/include/flang/Lower/Bridge.h
@@ -14,8 +14,6 @@
#define FORTRAN_LOWER_BRIDGE_H
#include "flang/Common/Fortran.h"
-#include "flang/Frontend/CodeGenOptions.h"
-#include "flang/Frontend/TargetOptions.h"
#include "flang/Lower/AbstractConverter.h"
#include "flang/Lower/EnvironmentDefault.h"
#include "flang/Lower/LoweringOptions.h"
@@ -67,13 +65,11 @@ class LoweringBridge {
const Fortran::lower::LoweringOptions &loweringOptions,
const std::vector<Fortran::lower::EnvironmentDefault> &envDefaults,
const Fortran::common::LanguageFeatureControl &languageFeatures,
- const llvm::TargetMachine &targetMachine,
- const Fortran::frontend::TargetOptions &targetOptions,
- const Fortran::frontend::CodeGenOptions &codeGenOptions) {
+ const llvm::TargetMachine &targetMachine, llvm::StringRef tuneCPU) {
return LoweringBridge(ctx, semanticsContext, defaultKinds, intrinsics,
targetCharacteristics, allCooked, triple, kindMap,
loweringOptions, envDefaults, languageFeatures,
- targetMachine, targetOptions, codeGenOptions);
+ targetMachine, tuneCPU);
}
//===--------------------------------------------------------------------===//
@@ -152,9 +148,7 @@ class LoweringBridge {
const Fortran::lower::LoweringOptions &loweringOptions,
const std::vector<Fortran::lower::EnvironmentDefault> &envDefaults,
const Fortran::common::LanguageFeatureControl &languageFeatures,
- const llvm::TargetMachine &targetMachine,
- const Fortran::frontend::TargetOptions &targetOptions,
- const Fortran::frontend::CodeGenOptions &codeGenOptions);
+ const llvm::TargetMachine &targetMachine, const llvm::StringRef tuneCPU);
LoweringBridge() = delete;
LoweringBridge(const LoweringBridge &) = delete;
diff --git a/flang/include/flang/Optimizer/Dialect/Support/FIRContext.h b/flang/include/flang/Optimizer/Dialect/Support/FIRContext.h
index 2df14f83c11e17..e45011c8e02a33 100644
--- a/flang/include/flang/Optimizer/Dialect/Support/FIRContext.h
+++ b/flang/include/flang/Optimizer/Dialect/Support/FIRContext.h
@@ -77,12 +77,6 @@ void setIdent(mlir::ModuleOp mod, llvm::StringRef ident);
/// Get the compiler identifier from the Module.
llvm::StringRef getIdent(mlir::ModuleOp mod);
-/// Set the command line used in this invocation.
-void setCommandline(mlir::ModuleOp mod, llvm::StringRef cmdLine);
-
-/// Get the command line used in this invocation.
-llvm::StringRef getCommandline(mlir::ModuleOp mod);
-
/// Helper for determining the target from the host, etc. Tools may use this
/// function to provide a consistent interpretation of the `--target=<string>`
/// command-line option.
diff --git a/flang/lib/Frontend/CompilerInvocation.cpp b/flang/lib/Frontend/CompilerInvocation.cpp
index 8441c7d8d2e9bc..90c327546198b5 100644
--- a/flang/lib/Frontend/CompilerInvocation.cpp
+++ b/flang/lib/Frontend/CompilerInvocation.cpp
@@ -348,12 +348,6 @@ static void parseCodeGenArgs(Fortran::frontend::CodeGenOptions &opts,
if (auto *a = args.getLastArg(clang::driver::options::OPT_save_temps_EQ))
opts.SaveTempsDir = a->getValue();
- // -record-command-line option.
- if (const llvm::opt::Arg *a =
- args.getLastArg(clang::driver::options::OPT_record_command_line)) {
- opts.RecordCommandLine = a->getValue();
- }
-
// -mlink-builtin-bitcode
for (auto *a :
args.filtered(clang::driver::options::OPT_mlink_builtin_bitcode))
diff --git a/flang/lib/Frontend/FrontendActions.cpp b/flang/lib/Frontend/FrontendActions.cpp
index 62a041c8202fcb..267c3ceb44f33e 100644
--- a/flang/lib/Frontend/FrontendActions.cpp
+++ b/flang/lib/Frontend/FrontendActions.cpp
@@ -302,7 +302,7 @@ bool CodeGenAction::beginSourceFileAction() {
kindMap, ci.getInvocation().getLoweringOpts(),
ci.getInvocation().getFrontendOpts().envDefaults,
ci.getInvocation().getFrontendOpts().features, targetMachine,
- ci.getInvocation().getTargetOpts(), ci.getInvocation().getCodeGenOpts());
+ ci.getInvocation().getTargetOpts().cpuToTuneFor);
// Fetch module from lb, so we can set
mlirModule = std::make_unique<mlir::ModuleOp>(lb.getModule());
diff --git a/flang/lib/Lower/Bridge.cpp b/flang/lib/Lower/Bridge.cpp
index 68dca219428280..ebcb7613969661 100644
--- a/flang/lib/Lower/Bridge.cpp
+++ b/flang/lib/Lower/Bridge.cpp
@@ -6064,9 +6064,7 @@ Fortran::lower::LoweringBridge::LoweringBridge(
const Fortran::lower::LoweringOptions &loweringOptions,
const std::vector<Fortran::lower::EnvironmentDefault> &envDefaults,
const Fortran::common::LanguageFeatureControl &languageFeatures,
- const llvm::TargetMachine &targetMachine,
- const Fortran::frontend::TargetOptions &targetOpts,
- const Fortran::frontend::CodeGenOptions &cgOpts)
+ const llvm::TargetMachine &targetMachine, const llvm::StringRef tuneCPU)
: semanticsContext{semanticsContext}, defaultKinds{defaultKinds},
intrinsics{intrinsics}, targetCharacteristics{targetCharacteristics},
cooked{&cooked}, context{context}, kindMap{kindMap},
@@ -6123,13 +6121,11 @@ Fortran::lower::LoweringBridge::LoweringBridge(
fir::setTargetTriple(*module.get(), triple);
fir::setKindMapping(*module.get(), kindMap);
fir::setTargetCPU(*module.get(), targetMachine.getTargetCPU());
- fir::setTuneCPU(*module.get(), targetOpts.cpuToTuneFor);
+ fir::setTuneCPU(*module.get(), tuneCPU);
fir::setTargetFeatures(*module.get(), targetMachine.getTargetFeatureString());
fir::support::setMLIRDataLayout(*module.get(),
targetMachine.createDataLayout());
fir::setIdent(*module.get(), Fortran::common::getFlangFullVersion());
- if (cgOpts.RecordCommandLine)
- fir::setCommandline(*module.get(), *cgOpts.RecordCommandLine);
}
void Fortran::lower::genCleanUpInRegionIfAny(
diff --git a/flang/lib/Optimizer/Dialect/Support/FIRContext.cpp b/flang/lib/Optimizer/Dialect/Support/FIRContext.cpp
index 01c0be66d1ecc3..5bd8e2d4336361 100644
--- a/flang/lib/Optimizer/Dialect/Support/FIRContext.cpp
+++ b/flang/lib/Optimizer/Dialect/Support/FIRContext.cpp
@@ -130,22 +130,6 @@ llvm::StringRef fir::getIdent(mlir::ModuleOp mod) {
return {};
}
-void fir::setCommandline(mlir::ModuleOp mod, llvm::StringRef cmdLine) {
- if (cmdLine.empty())
- return;
-
- mlir::MLIRContext *ctx = mod.getContext();
- mod->setAttr(mlir::LLVM::LLVMDialect::getCommandlineAttrName(),
- mlir::StringAttr::get(ctx, cmdLine));
-}
-
-llvm::StringRef fir::getCommandline(mlir::ModuleOp mod) {
- if (auto attr = mod->getAttrOfType<mlir::StringAttr>(
- mlir::LLVM::LLVMDialect::getCommandlineAttrName()))
- return attr;
- return {};
-}
-
std::string fir::determineTargetTriple(llvm::StringRef triple) {
// Treat "" or "default" as stand-ins for the default machine.
if (triple.empty() || triple == "default")
diff --git a/flang/test/Driver/frecord-command-line.f90 b/flang/test/Driver/frecord-command-line.f90
deleted file mode 100644
index bc4ce79e4a51c3..00000000000000
--- a/flang/test/Driver/frecord-command-line.f90
+++ /dev/null
@@ -1,16 +0,0 @@
-! This only checks that the command line is correctly passed on to the
-! -record-command-line option FC1 option and that the latter does not complain
-! about anything. The correct lowering to a module attribute and beyond will
-! be checked in other tests.
-!
-! RUN: %flang -### -target x86_64-unknown-linux -frecord-command-line %s 2>&1 | FileCheck --check-prefix=CHECK-RECORD %s
-! RUN: %flang -### -target x86_64-unknown-macosx -frecord-command-line %s 2>&1 | FileCheck --check-prefix=CHECK-RECORD %s
-! RUN: not %flang -### -target x86_64-unknown-windows -frecord-command-line %s 2>&1 | FileCheck --check-prefix=CHECK-RECORD-ERROR %s
-
-! RUN: %flang -### -target x86_64-unknown-linux -fno-record-command-line %s 2>&1 | FileCheck --check-prefix=CHECK-NO-RECORD %s
-! RUN: %flang -### -target x86_64-unknown-macosx -fno-record-command-line %s 2>&1 | FileCheck --check-prefix=CHECK-NO-RECORD %s
-! RUN: %flang -### -target x86_64-unknown-windows -fno-record-command-line %s 2>&1 | FileCheck --check-prefix=CHECK-NO-RECORD %s
-
-! CHECK-RECORD: "-record-command-line"
-! CHECK-NO-RECORD-NOT: "-record-command-line"
-! CHECK-RECORD-ERROR: error: unsupported option '-frecord-command-line' for target
diff --git a/flang/test/Lower/record-command-line.f90 b/flang/test/Lower/record-command-line.f90
deleted file mode 100644
index a7a25bb9e8725c..00000000000000
--- a/flang/test/Lower/record-command-line.f90
+++ /dev/null
@@ -1,9 +0,0 @@
-! The actual command line is recorded by the frontend and passed on to FC1 as
-! the argument to -record-command-line, so in this test, we just match against
-! some string with spaces that mimics what a hypothetical command line.
-
-! RUN: %flang_fc1 -record-command-line "exec -o infile" %s -emit-fir -o - | FileCheck %s
-
-! CHECK: module attributes {
-! CHECK-SAME: llvm.commandline = "exec -o infile"
-
diff --git a/flang/tools/bbc/CMakeLists.txt b/flang/tools/bbc/CMakeLists.txt
index 7db3b5d40c7c94..69316d4dc61de3 100644
--- a/flang/tools/bbc/CMakeLists.txt
+++ b/flang/tools/bbc/CMakeLists.txt
@@ -35,5 +35,4 @@ FortranParser
FortranEvaluate
FortranSemantics
FortranLower
-flangFrontend
)
diff --git a/flang/tools/bbc/bbc.cpp b/flang/tools/bbc/bbc.cpp
index 935fae2fc96a70..dcff4503f16571 100644
--- a/flang/tools/bbc/bbc.cpp
+++ b/flang/tools/bbc/bbc.cpp
@@ -18,7 +18,6 @@
#include "flang/Common/OpenMP-features.h"
#include "flang/Common/Version.h"
#include "flang/Common/default-kinds.h"
-#include "flang/Frontend/CodeGenOptions.h"
#include "flang/Frontend/TargetOptions.h"
#include "flang/Lower/Bridge.h"
#include "flang/Lower/PFTBuilder.h"
@@ -374,13 +373,12 @@ static llvm::LogicalResult convertFortranSourceToMLIR(
loweringOptions.setLowerToHighLevelFIR(useHLFIR || emitHLFIR);
loweringOptions.setNSWOnLoopVarInc(setNSW);
std::vector<Fortran::lower::EnvironmentDefault> envDefaults = {};
- Fortran::frontend::TargetOptions targetOpts;
- Fortran::frontend::CodeGenOptions cgOpts;
+ constexpr const char *tuneCPU = "";
auto burnside = Fortran::lower::LoweringBridge::create(
ctx, semanticsContext, defKinds, semanticsContext.intrinsics(),
semanticsContext.targetCharacteristics(), parsing.allCooked(),
targetTriple, kindMap, loweringOptions, envDefaults,
- semanticsContext.languageFeatures(), targetMachine, targetOpts, cgOpts);
+ semanticsContext.languageFeatures(), targetMachine, tuneCPU);
mlir::ModuleOp mlirModule = burnside.getModule();
if (enableOpenMP) {
if (enableOpenMPGPU && !enableOpenMPDevice) {
diff --git a/mlir/include/mlir/Dialect/LLVMIR/LLVMDialect.td b/mlir/include/mlir/Dialect/LLVMIR/LLVMDialect.td
index 27a2b418aadb2a..edcc34461f2f26 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/LLVMDialect.td
+++ b/mlir/include/mlir/Dialect/LLVMIR/LLVMDialect.td
@@ -33,7 +33,6 @@ def LLVM_Dialect : Dialect {
static StringRef getAliasScopesAttrName() { return "alias_scopes"; }
static StringRef getAccessGroupsAttrName() { return "access_groups"; }
static StringRef getIdentAttrName() { return "llvm.ident"; }
- static StringRef getCommandlineAttrName() { return "llvm.commandline"; }
/// Names of llvm parameter attributes.
static StringRef getAlignAttrName() { return "llvm.align"; }
diff --git a/mlir/include/mlir/Target/LLVMIR/ModuleImport.h b/mlir/include/mlir/Target/LLVMIR/ModuleImport.h
index d32aed69cd90e8..11f62c283d6a96 100644
--- a/mlir/include/mlir/Target/LLVMIR/ModuleImport.h
+++ b/mlir/include/mlir/Target/LLVMIR/ModuleImport.h
@@ -199,10 +199,6 @@ class ModuleImport {
/// Converts !llvm.ident metadata to the llvm.ident LLVM ModuleOp attribute.
LogicalResult convertIdentMetadata();
- /// Converts !llvm.commandline metadata to the llvm.commandline LLVM ModuleOp
- /// attribute.
- LogicalResult convertCommandlineMetadata();
-
/// Converts all LLVM metadata nodes that translate to attributes such as
/// alias analysis or access group metadata, and builds a map from the
/// metadata nodes to the converted attributes.
diff --git a/mlir/include/mlir/Target/LLVMIR/ModuleTranslation.h b/mlir/include/mlir/Target/LLVMIR/ModuleTranslation.h
index ffeeeae57ae952..3c85338bc642f6 100644
--- a/mlir/include/mlir/Target/LLVMIR/ModuleTranslation.h
+++ b/mlir/include/mlir/Target/LLVMIR/ModuleTranslation.h
@@ -332,9 +332,6 @@ class ModuleTranslation {
/// Process the ident LLVM Metadata, if it exists.
LogicalResult createIdentMetadata();
- /// Process the llvm.commandline LLVM Metadata, if it exists.
- LogicalResult createCommandlineMetadata();
-
/// Translates dialect attributes attached to the given operation.
LogicalResult
convertDialectAttributes(Operation *op,
diff --git a/mlir/lib/Target/LLVMIR/ModuleImport.cpp b/mlir/lib/Target/LLVMIR/ModuleImport.cpp
index 57dc0bf27d8c27..21f2050cbceb9c 100644
--- a/mlir/lib/Target/LLVMIR/ModuleImport.cpp
+++ b/mlir/lib/Target/LLVMIR/ModuleImport.cpp
@@ -535,23 +535,6 @@ LogicalResult ModuleImport::convertIdentMetadata() {
return success();
}
-LogicalResult ModuleImport::convertCommandlineMetadata() {
- for (const llvm::NamedMDNode &nmd : llvmModule->named_metadata()) {
- // llvm.commandline should have a single operand. That operand is itself an
- // MDNode with a single string operand.
- if (nmd.getName() != LLVMDialect::getCommandlineAttrName())
- continue;
-
- if (nmd.getNumOperands() == 1)
- if (auto *md = dyn_cast<llvm::MDNode>(nmd.getOperand(0)))
- if (md->getNumOperands() == 1)
- if (auto *mdStr = dyn_cast<llvm::MDString>(md->getOperand(0)))
- mlirModule->setAttr(LLVMDialect::getCommandlineAttrName(),
- builder.getStringAttr(mdStr->getString()));
- }
- return success();
-}
-
LogicalResult ModuleImport::convertMetadata() {
OpBuilder::InsertionGuard guard(builder);
builder.setInsertionPointToEnd(mlirModule.getBody());
@@ -582,8 +565,6 @@ LogicalResult ModuleImport::convertMetadata() {
return failure();
if (failed(convertIdentMetadata()))
return failure();
- if (failed(convertCommandlineMetadata()))
- return failure();
return success();
}
diff --git a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
index 3c6fbe64dc3184..fcb329eb7a92c1 100644
--- a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
+++ b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
@@ -1830,21 +1830,6 @@ LogicalResult ModuleTranslation::createIdentMetadata() {
return success();
}
-LogicalResult ModuleTranslation::createCommandlineMetadata() {
- if (auto attr = mlirModule->getAttrOfType<StringAttr>(
- LLVMDialect::getCommandlineAttrName())) {
- StringRef cmdLine = attr;
- llvm::LLVMContext &ctx = llvmModule->getContext();
- llvm::NamedMDNode *nmd = llvmModule->getOrInsertNamedMetadata(
- LLVMDialect::getCommandlineAttrName());
- llvm::MDNode *md =
- llvm::MDNode::get(ctx, llvm::MDString::get(ctx, cmdLine));
- nmd->addOperand(md);
- }
-
- return success();
-}
-
void ModuleTranslation::setLoopMetadata(Operation *op,
llvm::Instruction *inst) {
LoopAnnotationAttr attr =
@@ -1998,8 +1983,6 @@ mlir::translateModuleToLLVMIR(Operation *module, llvm::LLVMContext &llvmContext,
return nullptr;
if (failed(translator.createIdentMetadata()))
return nullptr;
- if (failed(translator.createCommandlineMetadata()))
- return nullptr;
// Convert other top-level operations if possible.
for (Operation &o : getModuleBody(module).getOperations()) {
diff --git a/mlir/test/Target/LLVMIR/Import/commandline.ll b/mlir/test/Target/LLVMIR/Import/commandline.ll
deleted file mode 100644
index f31aec8cc5aac1..00000000000000
--- a/mlir/test/Target/LLVMIR/Import/commandline.ll
+++ /dev/null
@@ -1,6 +0,0 @@
-; RUN: mlir-translate -import-llvm -split-input-file %s | FileCheck %s
-
-; CHECK: module attributes {
-; CHECK-SAME: llvm.commandline = "exec -o infile"
-!llvm.commandline = !{!0}
-!0 = !{!"exec -o infile"}
diff --git a/mlir/test/Target/LLVMIR/commandline.mlir b/mlir/test/Target/LLVMIR/commandline.mlir
deleted file mode 100644
index 817a5ac2164e9f..00000000000000
--- a/mlir/test/Target/LLVMIR/commandline.mlir
+++ /dev/null
@@ -1,6 +0,0 @@
-// RUN: mlir-translate -mlir-to-llvmir %s | FileCheck %s
-
-// CHECK: !llvm.commandline = !{![[S:[0-9]+]]}
-// CHECK: ![[S]] = !{!"exec -o infile"}
-module attributes {llvm.commandline = "exec -o infile"} {
-}
More information about the cfe-commits
mailing list