Skip to content

Commit

Permalink
[MC] Remove RelaxAll parameters from create*Streamer
Browse files Browse the repository at this point in the history
Related to clean-up opportunities discussed at #90013.

After these cleanups, the `RelaxAll` parameter from
`createMCObjectStreamer` can be removed as well. As
`createMCObjectStreamer` is a more user-facing API and used by two files
in mlir/, we postpone the cleanup to the future.
  • Loading branch information
MaskRay committed Apr 25, 2024
1 parent 72da62b commit 4e34035
Show file tree
Hide file tree
Showing 41 changed files with 118 additions and 152 deletions.
2 changes: 1 addition & 1 deletion llvm/include/llvm/MC/MCELFStreamer.h
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ MCELFStreamer *createARMELFStreamer(MCContext &Context,
std::unique_ptr<MCAsmBackend> TAB,
std::unique_ptr<MCObjectWriter> OW,
std::unique_ptr<MCCodeEmitter> Emitter,
bool RelaxAll, bool IsThumb, bool IsAndroid);
bool IsThumb, bool IsAndroid);

} // end namespace llvm

Expand Down
73 changes: 32 additions & 41 deletions llvm/include/llvm/MC/TargetRegistry.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,39 +92,33 @@ createAsmStreamer(MCContext &Ctx, std::unique_ptr<formatted_raw_ostream> OS,
MCStreamer *createELFStreamer(MCContext &Ctx,
std::unique_ptr<MCAsmBackend> &&TAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&CE,
bool RelaxAll);
std::unique_ptr<MCCodeEmitter> &&CE);
MCStreamer *createGOFFStreamer(MCContext &Ctx,
std::unique_ptr<MCAsmBackend> &&TAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&CE,
bool RelaxAll);
std::unique_ptr<MCCodeEmitter> &&CE);
MCStreamer *createMachOStreamer(MCContext &Ctx,
std::unique_ptr<MCAsmBackend> &&TAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&CE,
bool RelaxAll, bool DWARFMustBeAtTheEnd,
bool DWARFMustBeAtTheEnd,
bool LabelSections = false);
MCStreamer *createWasmStreamer(MCContext &Ctx,
std::unique_ptr<MCAsmBackend> &&TAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&CE,
bool RelaxAll);
std::unique_ptr<MCCodeEmitter> &&CE);
MCStreamer *createXCOFFStreamer(MCContext &Ctx,
std::unique_ptr<MCAsmBackend> &&TAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&CE,
bool RelaxAll);
std::unique_ptr<MCCodeEmitter> &&CE);
MCStreamer *createSPIRVStreamer(MCContext &Ctx,
std::unique_ptr<MCAsmBackend> &&TAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&CE,
bool RelaxAll);
std::unique_ptr<MCCodeEmitter> &&CE);
MCStreamer *createDXContainerStreamer(MCContext &Ctx,
std::unique_ptr<MCAsmBackend> &&TAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&CE,
bool RelaxAll);
std::unique_ptr<MCCodeEmitter> &&CE);

MCRelocationInfo *createMCRelocationInfo(const Triple &TT, MCContext &Ctx);

Expand Down Expand Up @@ -199,42 +193,42 @@ class Target {
MCStreamer *(*)(const Triple &T, MCContext &Ctx,
std::unique_ptr<MCAsmBackend> &&TAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&Emitter, bool RelaxAll);
std::unique_ptr<MCCodeEmitter> &&Emitter);
using GOFFStreamerCtorTy =
MCStreamer *(*)(MCContext &Ctx, std::unique_ptr<MCAsmBackend> &&TAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&Emitter, bool RelaxAll);
std::unique_ptr<MCCodeEmitter> &&Emitter);
using MachOStreamerCtorTy =
MCStreamer *(*)(MCContext &Ctx, std::unique_ptr<MCAsmBackend> &&TAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&Emitter, bool RelaxAll,
std::unique_ptr<MCCodeEmitter> &&Emitter,
bool DWARFMustBeAtTheEnd);
using COFFStreamerCtorTy =
MCStreamer *(*)(MCContext &Ctx, std::unique_ptr<MCAsmBackend> &&TAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&Emitter, bool RelaxAll,
std::unique_ptr<MCCodeEmitter> &&Emitter,
bool IncrementalLinkerCompatible);
using WasmStreamerCtorTy =
MCStreamer *(*)(const Triple &T, MCContext &Ctx,
std::unique_ptr<MCAsmBackend> &&TAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&Emitter, bool RelaxAll);
std::unique_ptr<MCCodeEmitter> &&Emitter);
using XCOFFStreamerCtorTy =
MCStreamer *(*)(const Triple &T, MCContext &Ctx,
std::unique_ptr<MCAsmBackend> &&TAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&Emitter, bool RelaxAll);
std::unique_ptr<MCCodeEmitter> &&Emitter);
using SPIRVStreamerCtorTy =
MCStreamer *(*)(const Triple &T, MCContext &Ctx,
std::unique_ptr<MCAsmBackend> &&TAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&Emitter, bool RelaxAll);
std::unique_ptr<MCCodeEmitter> &&Emitter);

using DXContainerStreamerCtorTy =
MCStreamer *(*)(const Triple &T, MCContext &Ctx,
std::unique_ptr<MCAsmBackend> &&TAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&Emitter, bool RelaxAll);
std::unique_ptr<MCCodeEmitter> &&Emitter);

using NullTargetStreamerCtorTy = MCTargetStreamer *(*)(MCStreamer &S);
using AsmTargetStreamerCtorTy = MCTargetStreamer *(*)(
Expand Down Expand Up @@ -566,7 +560,7 @@ class Target {
std::unique_ptr<MCAsmBackend> &&TAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&Emitter,
const MCSubtargetInfo &STI, bool RelaxAll,
const MCSubtargetInfo &STI, bool,
bool IncrementalLinkerCompatible,
bool DWARFMustBeAtTheEnd) const {
MCStreamer *S = nullptr;
Expand All @@ -577,66 +571,63 @@ class Target {
assert((T.isOSWindows() || T.isUEFI()) &&
"only Windows and UEFI COFF are supported");
S = COFFStreamerCtorFn(Ctx, std::move(TAB), std::move(OW),
std::move(Emitter), RelaxAll,
IncrementalLinkerCompatible);
std::move(Emitter), IncrementalLinkerCompatible);
break;
case Triple::MachO:
if (MachOStreamerCtorFn)
S = MachOStreamerCtorFn(Ctx, std::move(TAB), std::move(OW),
std::move(Emitter), RelaxAll,
DWARFMustBeAtTheEnd);
std::move(Emitter), DWARFMustBeAtTheEnd);
else
S = createMachOStreamer(Ctx, std::move(TAB), std::move(OW),
std::move(Emitter), RelaxAll,
DWARFMustBeAtTheEnd);
std::move(Emitter), DWARFMustBeAtTheEnd);
break;
case Triple::ELF:
if (ELFStreamerCtorFn)
S = ELFStreamerCtorFn(T, Ctx, std::move(TAB), std::move(OW),
std::move(Emitter), RelaxAll);
std::move(Emitter));
else
S = createELFStreamer(Ctx, std::move(TAB), std::move(OW),
std::move(Emitter), RelaxAll);
std::move(Emitter));
break;
case Triple::Wasm:
if (WasmStreamerCtorFn)
S = WasmStreamerCtorFn(T, Ctx, std::move(TAB), std::move(OW),
std::move(Emitter), RelaxAll);
std::move(Emitter));
else
S = createWasmStreamer(Ctx, std::move(TAB), std::move(OW),
std::move(Emitter), RelaxAll);
std::move(Emitter));
break;
case Triple::GOFF:
if (GOFFStreamerCtorFn)
S = GOFFStreamerCtorFn(Ctx, std::move(TAB), std::move(OW),
std::move(Emitter), RelaxAll);
std::move(Emitter));
else
S = createGOFFStreamer(Ctx, std::move(TAB), std::move(OW),
std::move(Emitter), RelaxAll);
std::move(Emitter));
break;
case Triple::XCOFF:
if (XCOFFStreamerCtorFn)
S = XCOFFStreamerCtorFn(T, Ctx, std::move(TAB), std::move(OW),
std::move(Emitter), RelaxAll);
std::move(Emitter));
else
S = createXCOFFStreamer(Ctx, std::move(TAB), std::move(OW),
std::move(Emitter), RelaxAll);
std::move(Emitter));
break;
case Triple::SPIRV:
if (SPIRVStreamerCtorFn)
S = SPIRVStreamerCtorFn(T, Ctx, std::move(TAB), std::move(OW),
std::move(Emitter), RelaxAll);
std::move(Emitter));
else
S = createSPIRVStreamer(Ctx, std::move(TAB), std::move(OW),
std::move(Emitter), RelaxAll);
std::move(Emitter));
break;
case Triple::DXContainer:
if (DXContainerStreamerCtorFn)
S = DXContainerStreamerCtorFn(T, Ctx, std::move(TAB), std::move(OW),
std::move(Emitter), RelaxAll);
std::move(Emitter));
else
S = createDXContainerStreamer(Ctx, std::move(TAB), std::move(OW),
std::move(Emitter), RelaxAll);
std::move(Emitter));
break;
}
if (ObjectTargetStreamerCtorFn)
Expand Down
3 changes: 1 addition & 2 deletions llvm/lib/MC/MCDXContainerStreamer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ void MCDXContainerStreamer::emitInstToData(const MCInst &,

MCStreamer *llvm::createDXContainerStreamer(
MCContext &Context, std::unique_ptr<MCAsmBackend> &&MAB,
std::unique_ptr<MCObjectWriter> &&OW, std::unique_ptr<MCCodeEmitter> &&CE,
bool RelaxAll) {
std::unique_ptr<MCObjectWriter> &&OW, std::unique_ptr<MCCodeEmitter> &&CE) {
auto *S = new MCDXContainerStreamer(Context, std::move(MAB), std::move(OW),
std::move(CE));
return S;
Expand Down
3 changes: 1 addition & 2 deletions llvm/lib/MC/MCELFStreamer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -892,8 +892,7 @@ void MCELFStreamer::createAttributesSection(
MCStreamer *llvm::createELFStreamer(MCContext &Context,
std::unique_ptr<MCAsmBackend> &&MAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&CE,
bool RelaxAll) {
std::unique_ptr<MCCodeEmitter> &&CE) {
MCELFStreamer *S =
new MCELFStreamer(Context, std::move(MAB), std::move(OW), std::move(CE));
return S;
Expand Down
3 changes: 1 addition & 2 deletions llvm/lib/MC/MCGOFFStreamer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@ MCGOFFStreamer::~MCGOFFStreamer() {}
MCStreamer *llvm::createGOFFStreamer(MCContext &Context,
std::unique_ptr<MCAsmBackend> &&MAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&CE,
bool RelaxAll) {
std::unique_ptr<MCCodeEmitter> &&CE) {
MCGOFFStreamer *S =
new MCGOFFStreamer(Context, std::move(MAB), std::move(OW), std::move(CE));
return S;
Expand Down
2 changes: 1 addition & 1 deletion llvm/lib/MC/MCMachOStreamer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -564,7 +564,7 @@ MCStreamer *llvm::createMachOStreamer(MCContext &Context,
std::unique_ptr<MCAsmBackend> &&MAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&CE,
bool RelaxAll, bool DWARFMustBeAtTheEnd,
bool DWARFMustBeAtTheEnd,
bool LabelSections) {
MCMachOStreamer *S =
new MCMachOStreamer(Context, std::move(MAB), std::move(OW), std::move(CE),
Expand Down
3 changes: 1 addition & 2 deletions llvm/lib/MC/MCSPIRVStreamer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,7 @@ void MCSPIRVStreamer::emitInstToData(const MCInst &Inst,
MCStreamer *llvm::createSPIRVStreamer(MCContext &Context,
std::unique_ptr<MCAsmBackend> &&MAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&CE,
bool RelaxAll) {
std::unique_ptr<MCCodeEmitter> &&CE) {
MCSPIRVStreamer *S = new MCSPIRVStreamer(Context, std::move(MAB),
std::move(OW), std::move(CE));
return S;
Expand Down
3 changes: 1 addition & 2 deletions llvm/lib/MC/MCWasmStreamer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -275,8 +275,7 @@ void MCWasmStreamer::emitTBSSSymbol(MCSection *Section, MCSymbol *Symbol,
MCStreamer *llvm::createWasmStreamer(MCContext &Context,
std::unique_ptr<MCAsmBackend> &&MAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&CE,
bool RelaxAll) {
std::unique_ptr<MCCodeEmitter> &&CE) {
MCWasmStreamer *S =
new MCWasmStreamer(Context, std::move(MAB), std::move(OW), std::move(CE));
return S;
Expand Down
3 changes: 1 addition & 2 deletions llvm/lib/MC/MCXCOFFStreamer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -162,8 +162,7 @@ void MCXCOFFStreamer::emitInstToData(const MCInst &Inst,
MCStreamer *llvm::createXCOFFStreamer(MCContext &Context,
std::unique_ptr<MCAsmBackend> &&MAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&CE,
bool RelaxAll) {
std::unique_ptr<MCCodeEmitter> &&CE) {
MCXCOFFStreamer *S = new MCXCOFFStreamer(Context, std::move(MAB),
std::move(OW), std::move(CE));
return S;
Expand Down
9 changes: 5 additions & 4 deletions llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -306,10 +306,11 @@ llvm::createAArch64AsmTargetStreamer(MCStreamer &S, formatted_raw_ostream &OS,
return new AArch64TargetAsmStreamer(S, OS);
}

MCELFStreamer *llvm::createAArch64ELFStreamer(
MCContext &Context, std::unique_ptr<MCAsmBackend> TAB,
std::unique_ptr<MCObjectWriter> OW, std::unique_ptr<MCCodeEmitter> Emitter,
bool RelaxAll) {
MCELFStreamer *
llvm::createAArch64ELFStreamer(MCContext &Context,
std::unique_ptr<MCAsmBackend> TAB,
std::unique_ptr<MCObjectWriter> OW,
std::unique_ptr<MCCodeEmitter> Emitter) {
AArch64ELFStreamer *S = new AArch64ELFStreamer(
Context, std::move(TAB), std::move(OW), std::move(Emitter));
return S;
Expand Down
3 changes: 1 addition & 2 deletions llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,7 @@ namespace llvm {
MCELFStreamer *createAArch64ELFStreamer(MCContext &Context,
std::unique_ptr<MCAsmBackend> TAB,
std::unique_ptr<MCObjectWriter> OW,
std::unique_ptr<MCCodeEmitter> Emitter,
bool RelaxAll);
std::unique_ptr<MCCodeEmitter> Emitter);
}

#endif
12 changes: 5 additions & 7 deletions llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -378,30 +378,28 @@ static MCInstPrinter *createAArch64MCInstPrinter(const Triple &T,
static MCStreamer *createELFStreamer(const Triple &T, MCContext &Ctx,
std::unique_ptr<MCAsmBackend> &&TAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&Emitter,
bool RelaxAll) {
std::unique_ptr<MCCodeEmitter> &&Emitter) {
return createAArch64ELFStreamer(Ctx, std::move(TAB), std::move(OW),
std::move(Emitter), RelaxAll);
std::move(Emitter));
}

static MCStreamer *createMachOStreamer(MCContext &Ctx,
std::unique_ptr<MCAsmBackend> &&TAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&Emitter,
bool RelaxAll,
bool DWARFMustBeAtTheEnd) {
return createMachOStreamer(Ctx, std::move(TAB), std::move(OW),
std::move(Emitter), RelaxAll, DWARFMustBeAtTheEnd,
std::move(Emitter), DWARFMustBeAtTheEnd,
/*LabelSections*/ true);
}

static MCStreamer *
createWinCOFFStreamer(MCContext &Ctx, std::unique_ptr<MCAsmBackend> &&TAB,
std::unique_ptr<MCObjectWriter> &&OW,
std::unique_ptr<MCCodeEmitter> &&Emitter, bool RelaxAll,
std::unique_ptr<MCCodeEmitter> &&Emitter,
bool IncrementalLinkerCompatible) {
return createAArch64WinCOFFStreamer(Ctx, std::move(TAB), std::move(OW),
std::move(Emitter), RelaxAll,
std::move(Emitter),
IncrementalLinkerCompatible);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,7 @@ void AArch64TargetWinCOFFStreamer::emitARM64WinCFISaveAnyRegQPX(unsigned Reg,
MCWinCOFFStreamer *llvm::createAArch64WinCOFFStreamer(
MCContext &Context, std::unique_ptr<MCAsmBackend> MAB,
std::unique_ptr<MCObjectWriter> OW, std::unique_ptr<MCCodeEmitter> Emitter,
bool RelaxAll, bool IncrementalLinkerCompatible) {
bool IncrementalLinkerCompatible) {
auto *S = new AArch64WinCOFFStreamer(Context, std::move(MAB),
std::move(Emitter), std::move(OW));
S->getAssembler().setIncrementalLinkerCompatible(IncrementalLinkerCompatible);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ namespace llvm {
MCWinCOFFStreamer *createAArch64WinCOFFStreamer(
MCContext &Context, std::unique_ptr<MCAsmBackend> TAB,
std::unique_ptr<MCObjectWriter> OW, std::unique_ptr<MCCodeEmitter> Emitter,
bool RelaxAll, bool IncrementalLinkerCompatible);
bool IncrementalLinkerCompatible);
} // end llvm namespace

#endif
9 changes: 5 additions & 4 deletions llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFStreamer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,11 @@ class AMDGPUELFStreamer : public MCELFStreamer {

}

MCELFStreamer *llvm::createAMDGPUELFStreamer(
const Triple &T, MCContext &Context, std::unique_ptr<MCAsmBackend> MAB,
std::unique_ptr<MCObjectWriter> OW, std::unique_ptr<MCCodeEmitter> Emitter,
bool RelaxAll) {
MCELFStreamer *
llvm::createAMDGPUELFStreamer(const Triple &T, MCContext &Context,
std::unique_ptr<MCAsmBackend> MAB,
std::unique_ptr<MCObjectWriter> OW,
std::unique_ptr<MCCodeEmitter> Emitter) {
return new AMDGPUELFStreamer(T, Context, std::move(MAB), std::move(OW),
std::move(Emitter));
}
Loading

0 comments on commit 4e34035

Please sign in to comment.