diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2019-12-20 19:53:05 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2019-12-20 19:53:05 +0000 |
| commit | 0b57cec536236d46e3dba9bd041533462f33dbb7 (patch) | |
| tree | 56229dbdbbf76d18580f72f789003db17246c8d9 /contrib/llvm/lib/CodeGen/FuncletLayout.cpp | |
| parent | 718ef55ec7785aae63f98f8ca05dc07ed399c16d (diff) | |
Notes
Diffstat (limited to 'contrib/llvm/lib/CodeGen/FuncletLayout.cpp')
| -rw-r--r-- | contrib/llvm/lib/CodeGen/FuncletLayout.cpp | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/contrib/llvm/lib/CodeGen/FuncletLayout.cpp b/contrib/llvm/lib/CodeGen/FuncletLayout.cpp deleted file mode 100644 index 75f6d0b8f0bf..000000000000 --- a/contrib/llvm/lib/CodeGen/FuncletLayout.cpp +++ /dev/null @@ -1,61 +0,0 @@ -//===-- FuncletLayout.cpp - Contiguously lay out funclets -----------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -// -// This file implements basic block placement transformations which result in -// funclets being contiguous. -// -//===----------------------------------------------------------------------===// -#include "llvm/CodeGen/Analysis.h" -#include "llvm/CodeGen/MachineFunction.h" -#include "llvm/CodeGen/MachineFunctionPass.h" -#include "llvm/CodeGen/Passes.h" -using namespace llvm; - -#define DEBUG_TYPE "funclet-layout" - -namespace { -class FuncletLayout : public MachineFunctionPass { -public: - static char ID; // Pass identification, replacement for typeid - FuncletLayout() : MachineFunctionPass(ID) { - initializeFuncletLayoutPass(*PassRegistry::getPassRegistry()); - } - - bool runOnMachineFunction(MachineFunction &F) override; - MachineFunctionProperties getRequiredProperties() const override { - return MachineFunctionProperties().set( - MachineFunctionProperties::Property::NoVRegs); - } -}; -} - -char FuncletLayout::ID = 0; -char &llvm::FuncletLayoutID = FuncletLayout::ID; -INITIALIZE_PASS(FuncletLayout, DEBUG_TYPE, - "Contiguously Lay Out Funclets", false, false) - -bool FuncletLayout::runOnMachineFunction(MachineFunction &F) { - // Even though this gets information from getEHScopeMembership(), this pass is - // only necessary for funclet-based EH personalities, in which these EH scopes - // are outlined at the end. - DenseMap<const MachineBasicBlock *, int> FuncletMembership = - getEHScopeMembership(F); - if (FuncletMembership.empty()) - return false; - - F.sort([&](MachineBasicBlock &X, MachineBasicBlock &Y) { - auto FuncletX = FuncletMembership.find(&X); - auto FuncletY = FuncletMembership.find(&Y); - assert(FuncletX != FuncletMembership.end()); - assert(FuncletY != FuncletMembership.end()); - return FuncletX->second < FuncletY->second; - }); - - // Conservatively assume we changed something. - return true; -} |
