summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2015-04-23 23:22:33 +0000
committerReid Kleckner <reid@kleckner.net>2015-04-23 23:22:33 +0000
commit5c5facc2ce1b8469494e37c07f69223e3bc45d2c (patch)
tree68bbda5c15ee53b1a14f61348941cc7a36f3eaec /llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp
parentef680565213b3cbe6ecc3162d37447d822bd3aa3 (diff)
downloadbcm5719-llvm-5c5facc2ce1b8469494e37c07f69223e3bc45d2c.tar.gz
bcm5719-llvm-5c5facc2ce1b8469494e37c07f69223e3bc45d2c.zip
Re-commit "[SEH] Remove the old __C_specific_handler code now that WinEHPrepare works"
This reverts commit r235617. r235649 should have addressed the problems. llvm-svn: 235667
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp40
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);
- }
}
}
OpenPOWER on IntegriCloud