diff options
author | Reid Kleckner <reid@kleckner.net> | 2015-04-22 22:13:09 +0000 |
---|---|---|
committer | Reid Kleckner <reid@kleckner.net> | 2015-04-22 22:13:09 +0000 |
commit | 64a2a6a473553f178b74c785722d4f8dfd6b9eb1 (patch) | |
tree | 03832e9e3ad863a9a103c0bd9e617dbe40ac7c6a /llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp | |
parent | 1f6220b0c9db9061f1fa1bfa83eca3d28fa627a7 (diff) | |
download | bcm5719-llvm-64a2a6a473553f178b74c785722d4f8dfd6b9eb1.tar.gz bcm5719-llvm-64a2a6a473553f178b74c785722d4f8dfd6b9eb1.zip |
[SEH] Remove the old __C_specific_handler code now that WinEHPrepare works
This removes the -sehprepare flag and makes __C_specific_handler
functions always to use WinEHPrepare.
This was tested by building all of chromium_builder_tests and running a
few tests that use SEH, but if something breaks, we can revert this.
llvm-svn: 235557
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp | 40 |
1 files changed, 0 insertions, 40 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp b/llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp index 2737a5323d6..be15989e5f6 100644 --- a/llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp @@ -206,12 +206,6 @@ void Win64Exception::emitCSpecificHandlerTable() { for (const CallSiteEntry &CSE : CallSites) { if (!CSE.LPad) continue; // Ignore gaps. - for (int Selector : CSE.LPad->TypeIds) { - // Ignore C++ filter clauses in SEH. - // FIXME: Implement cleanup clauses. - if (isCatchEHSelector(Selector)) - ++NumEntries; - } NumEntries += CSE.LPad->SEHHandlers.size(); } Asm->OutStreamer.EmitIntValue(NumEntries, 4); @@ -267,40 +261,6 @@ void Win64Exception::emitCSpecificHandlerTable() { else Asm->OutStreamer.EmitIntValue(0, 4); } - if (!LPad->SEHHandlers.empty()) - continue; - - // These aren't really type info globals, they are actually pointers to - // filter functions ordered by selector. The zero selector is used for - // cleanups, so slot zero corresponds to selector 1. - const std::vector<const GlobalValue *> &SelectorToFilter = MMI->getTypeInfos(); - - // Do a parallel iteration across typeids and clause labels, skipping filter - // clauses. - size_t NextClauseLabel = 0; - for (size_t I = 0, E = LPad->TypeIds.size(); I < E; ++I) { - // AddLandingPadInfo stores the clauses in reverse, but there is a FIXME - // to change that. - int Selector = LPad->TypeIds[E - I - 1]; - - // Ignore C++ filter clauses in SEH. - // FIXME: Implement cleanup clauses. - if (!isCatchEHSelector(Selector)) - continue; - - Asm->OutStreamer.EmitValue(Begin, 4); - Asm->OutStreamer.EmitValue(End, 4); - if (isCatchEHSelector(Selector)) { - assert(unsigned(Selector - 1) < SelectorToFilter.size()); - const GlobalValue *TI = SelectorToFilter[Selector - 1]; - if (TI) // Emit the filter function pointer. - Asm->OutStreamer.EmitValue(createImageRel32(Asm->getSymbol(TI)), 4); - else // Otherwise, this is a "catch i8* null", or catch all. - Asm->OutStreamer.EmitIntValue(1, 4); - } - MCSymbol *ClauseLabel = LPad->ClauseLabels[NextClauseLabel++]; - Asm->OutStreamer.EmitValue(createImageRel32(ClauseLabel), 4); - } } } |