mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-25 06:26:06 +00:00
[MC] MCAsmStreamer: use MCTargetOptions
Some bool parameters duplicate MCTargetOptions and might cause inconsistency/confusion.
This commit is contained in:
parent
aefe411dae
commit
52e79ed1e0
@ -531,6 +531,9 @@ static bool ExecuteAssemblerImpl(AssemblerInvocation &Opts,
|
||||
MCOptions.MCNoWarn = Opts.NoWarn;
|
||||
MCOptions.MCFatalWarnings = Opts.FatalWarnings;
|
||||
MCOptions.MCNoTypeCheck = Opts.NoTypeCheck;
|
||||
MCOptions.ShowMCInst = Opts.ShowInst;
|
||||
MCOptions.AsmVerbose = true;
|
||||
MCOptions.MCUseDwarfDirectory = MCTargetOptions::EnableDwarfDirectory;
|
||||
MCOptions.ABIName = Opts.TargetABI;
|
||||
|
||||
// FIXME: There is a bit of code duplication with addPassesToEmitFile.
|
||||
|
@ -167,25 +167,12 @@ Expected<std::unique_ptr<MCStreamer>> LLVMTargetMachine::createMCStreamer(
|
||||
if (Options.MCOptions.ShowMCEncoding)
|
||||
MCE.reset(getTarget().createMCCodeEmitter(MII, Context));
|
||||
|
||||
bool UseDwarfDirectory = false;
|
||||
switch (Options.MCOptions.MCUseDwarfDirectory) {
|
||||
case MCTargetOptions::DisableDwarfDirectory:
|
||||
UseDwarfDirectory = false;
|
||||
break;
|
||||
case MCTargetOptions::EnableDwarfDirectory:
|
||||
UseDwarfDirectory = true;
|
||||
break;
|
||||
case MCTargetOptions::DefaultDwarfDirectory:
|
||||
UseDwarfDirectory = MAI.enableDwarfFileDirectoryDefault();
|
||||
break;
|
||||
}
|
||||
|
||||
std::unique_ptr<MCAsmBackend> MAB(
|
||||
getTarget().createMCAsmBackend(STI, MRI, Options.MCOptions));
|
||||
auto FOut = std::make_unique<formatted_raw_ostream>(Out);
|
||||
MCStreamer *S = getTarget().createAsmStreamer(
|
||||
Context, std::move(FOut), Options.MCOptions.AsmVerbose,
|
||||
UseDwarfDirectory, InstPrinter, std::move(MCE), std::move(MAB),
|
||||
Context, std::move(FOut), Options.MCOptions.AsmVerbose, true,
|
||||
InstPrinter, std::move(MCE), std::move(MAB),
|
||||
Options.MCOptions.ShowMCInst);
|
||||
AsmStreamer.reset(S);
|
||||
break;
|
||||
|
@ -62,6 +62,8 @@ Error DwarfStreamer::init(Triple TheTriple,
|
||||
TripleName.c_str());
|
||||
|
||||
MCTargetOptions MCOptions = mc::InitMCTargetOptionsFromFlags();
|
||||
MCOptions.AsmVerbose = true;
|
||||
MCOptions.MCUseDwarfDirectory = MCTargetOptions::EnableDwarfDirectory;
|
||||
MAI.reset(TheTarget->createMCAsmInfo(*MRI, TripleName, MCOptions));
|
||||
if (!MAI)
|
||||
return createStringError(std::errc::invalid_argument,
|
||||
|
@ -41,6 +41,8 @@ Error DwarfEmitterImpl::init(Triple TheTriple,
|
||||
TripleName.c_str());
|
||||
|
||||
MCTargetOptions MCOptions = mc::InitMCTargetOptionsFromFlags();
|
||||
MCOptions.AsmVerbose = true;
|
||||
MCOptions.MCUseDwarfDirectory = MCTargetOptions::EnableDwarfDirectory;
|
||||
MAI.reset(TheTarget->createMCAsmInfo(*MRI, TripleName, MCOptions));
|
||||
if (!MAI)
|
||||
return createStringError(std::errc::invalid_argument,
|
||||
|
@ -55,9 +55,9 @@ class MCAsmStreamer final : public MCStreamer {
|
||||
raw_svector_ostream CommentStream;
|
||||
raw_null_ostream NullStream;
|
||||
|
||||
unsigned IsVerboseAsm : 1;
|
||||
unsigned ShowInst : 1;
|
||||
unsigned UseDwarfDirectory : 1;
|
||||
bool IsVerboseAsm = false;
|
||||
bool ShowInst = false;
|
||||
bool UseDwarfDirectory = false;
|
||||
|
||||
void EmitRegisterName(int64_t Register);
|
||||
void PrintQuotedString(StringRef Data, raw_ostream &OS) const;
|
||||
@ -72,24 +72,41 @@ class MCAsmStreamer final : public MCStreamer {
|
||||
|
||||
public:
|
||||
MCAsmStreamer(MCContext &Context, std::unique_ptr<formatted_raw_ostream> os,
|
||||
bool isVerboseAsm, bool useDwarfDirectory,
|
||||
MCInstPrinter *printer, std::unique_ptr<MCCodeEmitter> emitter,
|
||||
std::unique_ptr<MCAsmBackend> asmbackend, bool showInst)
|
||||
bool, bool, MCInstPrinter *printer,
|
||||
std::unique_ptr<MCCodeEmitter> emitter,
|
||||
std::unique_ptr<MCAsmBackend> asmbackend, bool)
|
||||
: MCStreamer(Context), OSOwner(std::move(os)), OS(*OSOwner),
|
||||
MAI(Context.getAsmInfo()), InstPrinter(printer),
|
||||
Assembler(std::make_unique<MCAssembler>(
|
||||
Context, std::move(asmbackend), std::move(emitter),
|
||||
(asmbackend) ? asmbackend->createObjectWriter(NullStream)
|
||||
: nullptr)),
|
||||
CommentStream(CommentToEmit), IsVerboseAsm(isVerboseAsm),
|
||||
ShowInst(showInst), UseDwarfDirectory(useDwarfDirectory) {
|
||||
CommentStream(CommentToEmit) {
|
||||
assert(InstPrinter);
|
||||
if (IsVerboseAsm)
|
||||
InstPrinter->setCommentStream(CommentStream);
|
||||
if (Assembler->getBackendPtr())
|
||||
setAllowAutoPadding(Assembler->getBackend().allowAutoPadding());
|
||||
|
||||
Context.setUseNamesOnTempLabels(true);
|
||||
|
||||
auto *TO = Context.getTargetOptions();
|
||||
if (!TO)
|
||||
return;
|
||||
IsVerboseAsm = TO->AsmVerbose;
|
||||
if (IsVerboseAsm)
|
||||
InstPrinter->setCommentStream(CommentStream);
|
||||
ShowInst = TO->ShowMCInst;
|
||||
switch (TO->MCUseDwarfDirectory) {
|
||||
case MCTargetOptions::DisableDwarfDirectory:
|
||||
UseDwarfDirectory = false;
|
||||
break;
|
||||
case MCTargetOptions::EnableDwarfDirectory:
|
||||
UseDwarfDirectory = true;
|
||||
break;
|
||||
case MCTargetOptions::DefaultDwarfDirectory:
|
||||
UseDwarfDirectory =
|
||||
Context.getAsmInfo()->enableDwarfFileDirectoryDefault();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
MCAssembler &getAssembler() { return *Assembler; }
|
||||
|
@ -356,6 +356,9 @@ int main(int argc, char **argv) {
|
||||
cl::ParseCommandLineOptions(argc, argv, "llvm machine code playground\n");
|
||||
MCTargetOptions MCOptions = mc::InitMCTargetOptionsFromFlags();
|
||||
MCOptions.CompressDebugSections = CompressDebugSections.getValue();
|
||||
MCOptions.ShowMCInst = ShowInst;
|
||||
MCOptions.AsmVerbose = true;
|
||||
MCOptions.MCUseDwarfDirectory = MCTargetOptions::EnableDwarfDirectory;
|
||||
|
||||
setDwarfDebugFlags(argc, argv);
|
||||
setDwarfDebugProducer();
|
||||
|
@ -264,6 +264,7 @@ int llvm_ml_main(int Argc, char **Argv, const llvm::ToolContext &) {
|
||||
MCOptions.AssemblyLanguage = "masm";
|
||||
MCOptions.MCFatalWarnings = InputArgs.hasArg(OPT_fatal_warnings);
|
||||
MCOptions.MCSaveTempLabels = InputArgs.hasArg(OPT_save_temp_labels);
|
||||
MCOptions.AsmVerbose = true;
|
||||
|
||||
Triple TheTriple = GetTriple(ProgName, InputArgs);
|
||||
std::string Error;
|
||||
|
Loading…
x
Reference in New Issue
Block a user