Skip to content

Commit 0d043c4

Browse files
author
Tony Tao
committed
Ignore this commit. Stacking this PR on top of PR llvm#107415
1 parent 853bff2 commit 0d043c4

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

llvm/include/llvm/MC/TargetRegistry.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,10 @@ class Target {
208208
using AsmTargetStreamerCtorTy =
209209
MCTargetStreamer *(*)(MCStreamer &S, formatted_raw_ostream &OS,
210210
MCInstPrinter *InstPrint);
211+
using AsmStreamerCtorTy =
212+
MCStreamer *(*)(MCContext &Ctx, std::unique_ptr<formatted_raw_ostream> OS,
213+
MCInstPrinter *IP, std::unique_ptr<MCCodeEmitter> CE,
214+
std::unique_ptr<MCAsmBackend> TAB);
211215
using ObjectTargetStreamerCtorTy = MCTargetStreamer *(*)(
212216
MCStreamer &S, const MCSubtargetInfo &STI);
213217
using MCRelocationInfoCtorTy = MCRelocationInfo *(*)(const Triple &TT,
@@ -316,6 +320,10 @@ class Target {
316320
/// registered (default = nullptr).
317321
AsmTargetStreamerCtorTy AsmTargetStreamerCtorFn = nullptr;
318322

323+
/// Construction function for this target's AsmStreamer, if
324+
/// registered (default = nullptr).
325+
AsmStreamerCtorTy AsmStreamerCtorFn = nullptr;
326+
319327
/// Construction function for this target's obj TargetStreamer, if
320328
/// registered (default = nullptr).
321329
ObjectTargetStreamerCtorTy ObjectTargetStreamerCtorFn = nullptr;
@@ -927,6 +935,10 @@ struct TargetRegistry {
927935
T.NullTargetStreamerCtorFn = Fn;
928936
}
929937

938+
static void RegisterAsmStreamer(Target &T, Target::AsmStreamerCtorTy Fn) {
939+
T.AsmStreamerCtorFn = Fn;
940+
}
941+
930942
static void RegisterAsmTargetStreamer(Target &T,
931943
Target::AsmTargetStreamerCtorTy Fn) {
932944
T.AsmTargetStreamerCtorFn = Fn;

llvm/lib/MC/TargetRegistry.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,14 @@ MCStreamer *Target::createAsmStreamer(MCContext &Ctx,
9393
std::unique_ptr<MCCodeEmitter> CE,
9494
std::unique_ptr<MCAsmBackend> TAB) const {
9595
formatted_raw_ostream &OSRef = *OS;
96-
MCStreamer *S = llvm::createAsmStreamer(Ctx, std::move(OS), IP,
97-
std::move(CE), std::move(TAB));
96+
MCStreamer *S;
97+
if (AsmStreamerCtorFn)
98+
S = AsmStreamerCtorFn(Ctx, std::move(OS), IP, std::move(CE),
99+
std::move(TAB));
100+
else
101+
S = llvm::createAsmStreamer(Ctx, std::move(OS), IP, std::move(CE),
102+
std::move(TAB));
103+
98104
createAsmTargetStreamer(*S, OSRef, IP);
99105
return S;
100106
}

0 commit comments

Comments
 (0)