diff options
author | Saleem Abdulrasool <compnerd@compnerd.org> | 2014-08-03 18:51:26 +0000 |
---|---|---|
committer | Saleem Abdulrasool <compnerd@compnerd.org> | 2014-08-03 18:51:26 +0000 |
commit | 4544c16eab32bb9da701c52d5fdb1b1cce9f9204 (patch) | |
tree | 1db96dad5f190a8ec6cc90ef174567fdf3966e5a /llvm/lib | |
parent | b3be7371d59b9b4262dd0a440580ce67a889d81a (diff) | |
download | bcm5719-llvm-4544c16eab32bb9da701c52d5fdb1b1cce9f9204.tar.gz bcm5719-llvm-4544c16eab32bb9da701c52d5fdb1b1cce9f9204.zip |
MC: virtualise EmitWindowsUnwindTables
This makes EmitWindowsUnwindTables a virtual function and lowers the
implementation of the function to the X86WinCOFFStreamer. This method is a
target specific operation. This enables making the behaviour target dependent
by isolating it entirely to the target specific streamer.
llvm-svn: 214664
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/MC/MCStreamer.cpp | 4 | ||||
-rw-r--r-- | llvm/lib/Target/X86/MCTargetDesc/X86WinCOFFStreamer.cpp | 7 |
2 files changed, 7 insertions, 4 deletions
diff --git a/llvm/lib/MC/MCStreamer.cpp b/llvm/lib/MC/MCStreamer.cpp index f4a47b9b3bc..9ee5dec8b31 100644 --- a/llvm/lib/MC/MCStreamer.cpp +++ b/llvm/lib/MC/MCStreamer.cpp @@ -601,10 +601,6 @@ void MCStreamer::EmitRawText(const Twine &T) { } void MCStreamer::EmitWindowsUnwindTables() { - if (!getNumWinFrameInfos()) - return; - - MCWin64EHUnwindEmitter::Emit(*this); } void MCStreamer::Finish() { diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86WinCOFFStreamer.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86WinCOFFStreamer.cpp index 6727f5edd26..a57988a4913 100644 --- a/llvm/lib/Target/X86/MCTargetDesc/X86WinCOFFStreamer.cpp +++ b/llvm/lib/Target/X86/MCTargetDesc/X86WinCOFFStreamer.cpp @@ -20,6 +20,7 @@ public: : MCWinCOFFStreamer(C, AB, *CE, OS) { } void EmitWinEHHandlerData() override; + void EmitWindowsUnwindTables() override; void FinishImpl() override; }; @@ -31,6 +32,12 @@ void X86WinCOFFStreamer::EmitWinEHHandlerData() { MCWin64EHUnwindEmitter::EmitUnwindInfo(*this, getCurrentWinFrameInfo()); } +void X86WinCOFFStreamer::EmitWindowsUnwindTables() { + if (!getNumWinFrameInfos()) + return; + MCWin64EHUnwindEmitter::Emit(*this); +} + void X86WinCOFFStreamer::FinishImpl() { EmitFrames(nullptr); EmitWindowsUnwindTables(); |