diff options
author | Bill Wendling <isanbard@gmail.com> | 2011-09-06 18:37:11 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2011-09-06 18:37:11 +0000 |
commit | d8ab8e9707e6170218ce82516d15b36f54b4bc1c (patch) | |
tree | ed5450e5264257f95997e770bb5c49b76fb6ef7c /lib/MC/MCDwarf.cpp | |
parent | 81856f7313cb8cd64e0c3746ebcc3337ade9e5ee (diff) |
As a first step, emit both the compact unwind and CIE/FDEs for a function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139152 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/MC/MCDwarf.cpp')
-rw-r--r-- | lib/MC/MCDwarf.cpp | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/lib/MC/MCDwarf.cpp b/lib/MC/MCDwarf.cpp index b57fd9a13b..4658a3093f 100644 --- a/lib/MC/MCDwarf.cpp +++ b/lib/MC/MCDwarf.cpp @@ -1013,24 +1013,18 @@ void MCDwarfFrameEmitter::Emit(MCStreamer &Streamer, MCObjectFileInfo *MOFI = const_cast<MCObjectFileInfo*>(Context.getObjectFileInfo()); FrameEmitterImpl Emitter(UsingCFI, IsEH); - SmallVector<MCDwarfFrameInfo, 8> RequiresFDE; - ArrayRef<MCDwarfFrameInfo> FrameArray; + ArrayRef<MCDwarfFrameInfo> FrameArray = Streamer.getFrameInfos(); - if (IsEH && MOFI->getCompactUnwindSection()) { + // Emit the compact unwind info if available. + // FIXME: This emits both the compact unwind and the old CIE/FDE + // information. Only one of those is needed. + if (IsEH && MOFI->getCompactUnwindSection()) for (unsigned i = 0, n = Streamer.getNumFrameInfos(); i < n; ++i) { const MCDwarfFrameInfo &Frame = Streamer.getFrameInfo(i); - if (!Frame.CompactUnwindEncoding || - !Emitter.EmitCompactUnwind(Streamer, Frame)) - RequiresFDE.push_back(Streamer.getFrameInfo(i)); + if (!Frame.CompactUnwindEncoding) + Emitter.EmitCompactUnwind(Streamer, Frame); } - // Early exit if we don't need to emit FDEs. - if (RequiresFDE.empty()) return; - FrameArray = RequiresFDE; - } else { - FrameArray = Streamer.getFrameInfos(); - } - const MCSection &Section = IsEH ? *MOFI->getEHFrameSection() : *MOFI->getDwarfFrameSection(); Streamer.SwitchSection(&Section); |