Skip to content

Commit 52e79ed

Browse files
committed
[MC] MCAsmStreamer: use MCTargetOptions
Some bool parameters duplicate MCTargetOptions and might cause inconsistency/confusion.
1 parent aefe411 commit 52e79ed

File tree

7 files changed

+40
-25
lines changed

7 files changed

+40
-25
lines changed

clang/tools/driver/cc1as_main.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -531,6 +531,9 @@ static bool ExecuteAssemblerImpl(AssemblerInvocation &Opts,
531531
MCOptions.MCNoWarn = Opts.NoWarn;
532532
MCOptions.MCFatalWarnings = Opts.FatalWarnings;
533533
MCOptions.MCNoTypeCheck = Opts.NoTypeCheck;
534+
MCOptions.ShowMCInst = Opts.ShowInst;
535+
MCOptions.AsmVerbose = true;
536+
MCOptions.MCUseDwarfDirectory = MCTargetOptions::EnableDwarfDirectory;
534537
MCOptions.ABIName = Opts.TargetABI;
535538

536539
// FIXME: There is a bit of code duplication with addPassesToEmitFile.

llvm/lib/CodeGen/LLVMTargetMachine.cpp

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -167,25 +167,12 @@ Expected<std::unique_ptr<MCStreamer>> LLVMTargetMachine::createMCStreamer(
167167
if (Options.MCOptions.ShowMCEncoding)
168168
MCE.reset(getTarget().createMCCodeEmitter(MII, Context));
169169

170-
bool UseDwarfDirectory = false;
171-
switch (Options.MCOptions.MCUseDwarfDirectory) {
172-
case MCTargetOptions::DisableDwarfDirectory:
173-
UseDwarfDirectory = false;
174-
break;
175-
case MCTargetOptions::EnableDwarfDirectory:
176-
UseDwarfDirectory = true;
177-
break;
178-
case MCTargetOptions::DefaultDwarfDirectory:
179-
UseDwarfDirectory = MAI.enableDwarfFileDirectoryDefault();
180-
break;
181-
}
182-
183170
std::unique_ptr<MCAsmBackend> MAB(
184171
getTarget().createMCAsmBackend(STI, MRI, Options.MCOptions));
185172
auto FOut = std::make_unique<formatted_raw_ostream>(Out);
186173
MCStreamer *S = getTarget().createAsmStreamer(
187-
Context, std::move(FOut), Options.MCOptions.AsmVerbose,
188-
UseDwarfDirectory, InstPrinter, std::move(MCE), std::move(MAB),
174+
Context, std::move(FOut), Options.MCOptions.AsmVerbose, true,
175+
InstPrinter, std::move(MCE), std::move(MAB),
189176
Options.MCOptions.ShowMCInst);
190177
AsmStreamer.reset(S);
191178
break;

llvm/lib/DWARFLinker/Classic/DWARFStreamer.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ Error DwarfStreamer::init(Triple TheTriple,
6262
TripleName.c_str());
6363

6464
MCTargetOptions MCOptions = mc::InitMCTargetOptionsFromFlags();
65+
MCOptions.AsmVerbose = true;
66+
MCOptions.MCUseDwarfDirectory = MCTargetOptions::EnableDwarfDirectory;
6567
MAI.reset(TheTarget->createMCAsmInfo(*MRI, TripleName, MCOptions));
6668
if (!MAI)
6769
return createStringError(std::errc::invalid_argument,

llvm/lib/DWARFLinker/Parallel/DWARFEmitterImpl.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ Error DwarfEmitterImpl::init(Triple TheTriple,
4141
TripleName.c_str());
4242

4343
MCTargetOptions MCOptions = mc::InitMCTargetOptionsFromFlags();
44+
MCOptions.AsmVerbose = true;
45+
MCOptions.MCUseDwarfDirectory = MCTargetOptions::EnableDwarfDirectory;
4446
MAI.reset(TheTarget->createMCAsmInfo(*MRI, TripleName, MCOptions));
4547
if (!MAI)
4648
return createStringError(std::errc::invalid_argument,

llvm/lib/MC/MCAsmStreamer.cpp

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,9 @@ class MCAsmStreamer final : public MCStreamer {
5555
raw_svector_ostream CommentStream;
5656
raw_null_ostream NullStream;
5757

58-
unsigned IsVerboseAsm : 1;
59-
unsigned ShowInst : 1;
60-
unsigned UseDwarfDirectory : 1;
58+
bool IsVerboseAsm = false;
59+
bool ShowInst = false;
60+
bool UseDwarfDirectory = false;
6161

6262
void EmitRegisterName(int64_t Register);
6363
void PrintQuotedString(StringRef Data, raw_ostream &OS) const;
@@ -72,24 +72,41 @@ class MCAsmStreamer final : public MCStreamer {
7272

7373
public:
7474
MCAsmStreamer(MCContext &Context, std::unique_ptr<formatted_raw_ostream> os,
75-
bool isVerboseAsm, bool useDwarfDirectory,
76-
MCInstPrinter *printer, std::unique_ptr<MCCodeEmitter> emitter,
77-
std::unique_ptr<MCAsmBackend> asmbackend, bool showInst)
75+
bool, bool, MCInstPrinter *printer,
76+
std::unique_ptr<MCCodeEmitter> emitter,
77+
std::unique_ptr<MCAsmBackend> asmbackend, bool)
7878
: MCStreamer(Context), OSOwner(std::move(os)), OS(*OSOwner),
7979
MAI(Context.getAsmInfo()), InstPrinter(printer),
8080
Assembler(std::make_unique<MCAssembler>(
8181
Context, std::move(asmbackend), std::move(emitter),
8282
(asmbackend) ? asmbackend->createObjectWriter(NullStream)
8383
: nullptr)),
84-
CommentStream(CommentToEmit), IsVerboseAsm(isVerboseAsm),
85-
ShowInst(showInst), UseDwarfDirectory(useDwarfDirectory) {
84+
CommentStream(CommentToEmit) {
8685
assert(InstPrinter);
87-
if (IsVerboseAsm)
88-
InstPrinter->setCommentStream(CommentStream);
8986
if (Assembler->getBackendPtr())
9087
setAllowAutoPadding(Assembler->getBackend().allowAutoPadding());
9188

9289
Context.setUseNamesOnTempLabels(true);
90+
91+
auto *TO = Context.getTargetOptions();
92+
if (!TO)
93+
return;
94+
IsVerboseAsm = TO->AsmVerbose;
95+
if (IsVerboseAsm)
96+
InstPrinter->setCommentStream(CommentStream);
97+
ShowInst = TO->ShowMCInst;
98+
switch (TO->MCUseDwarfDirectory) {
99+
case MCTargetOptions::DisableDwarfDirectory:
100+
UseDwarfDirectory = false;
101+
break;
102+
case MCTargetOptions::EnableDwarfDirectory:
103+
UseDwarfDirectory = true;
104+
break;
105+
case MCTargetOptions::DefaultDwarfDirectory:
106+
UseDwarfDirectory =
107+
Context.getAsmInfo()->enableDwarfFileDirectoryDefault();
108+
break;
109+
}
93110
}
94111

95112
MCAssembler &getAssembler() { return *Assembler; }

llvm/tools/llvm-mc/llvm-mc.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,9 @@ int main(int argc, char **argv) {
356356
cl::ParseCommandLineOptions(argc, argv, "llvm machine code playground\n");
357357
MCTargetOptions MCOptions = mc::InitMCTargetOptionsFromFlags();
358358
MCOptions.CompressDebugSections = CompressDebugSections.getValue();
359+
MCOptions.ShowMCInst = ShowInst;
360+
MCOptions.AsmVerbose = true;
361+
MCOptions.MCUseDwarfDirectory = MCTargetOptions::EnableDwarfDirectory;
359362

360363
setDwarfDebugFlags(argc, argv);
361364
setDwarfDebugProducer();

llvm/tools/llvm-ml/llvm-ml.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ int llvm_ml_main(int Argc, char **Argv, const llvm::ToolContext &) {
264264
MCOptions.AssemblyLanguage = "masm";
265265
MCOptions.MCFatalWarnings = InputArgs.hasArg(OPT_fatal_warnings);
266266
MCOptions.MCSaveTempLabels = InputArgs.hasArg(OPT_save_temp_labels);
267+
MCOptions.AsmVerbose = true;
267268

268269
Triple TheTriple = GetTriple(ProgName, InputArgs);
269270
std::string Error;

0 commit comments

Comments
 (0)