summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorSaleem Abdulrasool <compnerd@compnerd.org>2014-08-03 18:51:26 +0000
committerSaleem Abdulrasool <compnerd@compnerd.org>2014-08-03 18:51:26 +0000
commit4544c16eab32bb9da701c52d5fdb1b1cce9f9204 (patch)
tree1db96dad5f190a8ec6cc90ef174567fdf3966e5a /llvm/lib
parentb3be7371d59b9b4262dd0a440580ce67a889d81a (diff)
downloadbcm5719-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.cpp4
-rw-r--r--llvm/lib/Target/X86/MCTargetDesc/X86WinCOFFStreamer.cpp7
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();
OpenPOWER on IntegriCloud