#pragma once // // This file is distributed under the MIT License. See LICENSE.md for details. // #include "llvm/ADT/SetVector.h" #include "llvm/IR/BasicBlock.h" /// Helper function to retrieve the successors of a block on the `ScopeGraph` llvm::SmallSetVector getScopeGraphSuccessors(llvm::BasicBlock *N); /// Helper function to retrieve the predecessors of a block on the `ScopeGraph` llvm::SmallSetVector getScopeGraphPredecessors(llvm::BasicBlock *N); /// Helper function to collect all the nodes, on the `ScopeGraph`, between a /// block and its immediate postdominator, using a _dfs_ext` llvm::SmallVector getNodesInScope(llvm::BasicBlock *ScopeEntryBlock, llvm::BasicBlock *PostDominator); /// Helper function which verifies the decidedness of the `ScopeGraph` /// employing the _absolute decidedness_ definition bool isScopeGraphDecided(llvm::Function &F);