mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-25 13:24:46 +00:00
Introduce Target::createNullTargetStreamer and use it from IRObjectFile.
A null MCTargetStreamer allows IRObjectFile to ignore target-specific directives. Previously we were crashing. Differential Revision: http://reviews.llvm.org/D7711 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229797 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -47,6 +47,7 @@ namespace llvm {
|
||||
class MCRelocationInfo;
|
||||
class MCTargetAsmParser;
|
||||
class MCTargetOptions;
|
||||
class MCTargetStreamer;
|
||||
class TargetMachine;
|
||||
class TargetOptions;
|
||||
class raw_ostream;
|
||||
@@ -139,6 +140,7 @@ namespace llvm {
|
||||
MCAsmBackend *TAB,
|
||||
bool ShowInst);
|
||||
typedef MCStreamer *(*NullStreamerCtorTy)(MCContext &Ctx);
|
||||
typedef MCTargetStreamer *(*NullTargetStreamerCtorTy)(MCStreamer &S);
|
||||
typedef MCRelocationInfo *(*MCRelocationInfoCtorTy)(StringRef TT,
|
||||
MCContext &Ctx);
|
||||
typedef MCSymbolizer *(*MCSymbolizerCtorTy)(
|
||||
@@ -227,6 +229,10 @@ namespace llvm {
|
||||
/// (default = llvm::createNullStreamer).
|
||||
NullStreamerCtorTy NullStreamerCtorFn;
|
||||
|
||||
/// Construction function for this target's null TargetStreamer, if
|
||||
/// registered (default = nullptr).
|
||||
NullTargetStreamerCtorTy NullTargetStreamerCtorFn;
|
||||
|
||||
/// MCRelocationInfoCtorFn - Construction function for this target's
|
||||
/// MCRelocationInfo, if registered (default = llvm::createMCRelocationInfo)
|
||||
MCRelocationInfoCtorTy MCRelocationInfoCtorFn;
|
||||
@@ -453,6 +459,12 @@ namespace llvm {
|
||||
return llvm::createNullStreamer(Ctx);
|
||||
}
|
||||
|
||||
MCTargetStreamer *createNullTargetStreamer(MCStreamer &S) const {
|
||||
if (NullTargetStreamerCtorFn)
|
||||
return NullTargetStreamerCtorFn(S);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
/// createMCRelocationInfo - Create a target specific MCRelocationInfo.
|
||||
///
|
||||
/// \param TT The target triple.
|
||||
@@ -783,6 +795,11 @@ namespace llvm {
|
||||
T.NullStreamerCtorFn = Fn;
|
||||
}
|
||||
|
||||
static void
|
||||
RegisterNullTargetStreamer(Target &T, Target::NullTargetStreamerCtorTy Fn) {
|
||||
T.NullTargetStreamerCtorFn = Fn;
|
||||
}
|
||||
|
||||
/// RegisterMCRelocationInfo - Register an MCRelocationInfo
|
||||
/// implementation for the given target.
|
||||
///
|
||||
|
Reference in New Issue
Block a user