14c9df7c619ba827729490757dae6dc35bb068a9fChris Lattner//===- PostDominators.cpp - Post-Dominator Calculation --------------------===// 22b37d7cf28b1382420b5e4007042feeb66d21ac8Misha Brukman// 3b576c94c15af9a440f69d9d03c2afead7971118cJohn Criswell// The LLVM Compiler Infrastructure 4b576c94c15af9a440f69d9d03c2afead7971118cJohn Criswell// 54ee451de366474b9c228b4e5fa573795a715216dChris Lattner// This file is distributed under the University of Illinois Open Source 64ee451de366474b9c228b4e5fa573795a715216dChris Lattner// License. See LICENSE.TXT for details. 72b37d7cf28b1382420b5e4007042feeb66d21ac8Misha Brukman// 8b576c94c15af9a440f69d9d03c2afead7971118cJohn Criswell//===----------------------------------------------------------------------===// 91715229db9c04e73ba8acb8579eb2b9465209785Chris Lattner// 104c9df7c619ba827729490757dae6dc35bb068a9fChris Lattner// This file implements the post-dominator construction algorithms. 111715229db9c04e73ba8acb8579eb2b9465209785Chris Lattner// 121715229db9c04e73ba8acb8579eb2b9465209785Chris Lattner//===----------------------------------------------------------------------===// 131715229db9c04e73ba8acb8579eb2b9465209785Chris Lattner 14a69fd903585a665c031d5aa3fdfb8dc919b44befChris Lattner#include "llvm/Analysis/PostDominators.h" 15551ccae044b0ff658fe629dd67edd5ffe75d10e8Reid Spencer#include "llvm/ADT/DepthFirstIterator.h" 16551ccae044b0ff658fe629dd67edd5ffe75d10e8Reid Spencer#include "llvm/ADT/SetOperations.h" 1736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#include "llvm/IR/CFG.h" 180b8c9a80f20772c3793201ab5b251d3520b9cea3Chandler Carruth#include "llvm/IR/Instructions.h" 19d04a8d4b33ff316ca4cf961e06c9e312eff8e64fChandler Carruth#include "llvm/Support/Debug.h" 2036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#include "llvm/Support/GenericDomTreeConstruction.h" 21cd7c2877307bc82fdda978dc6f97d4c608e77a80Chris Lattnerusing namespace llvm; 22d0fde30ce850b78371fd1386338350591f9ff494Brian Gaeke 23dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#define DEBUG_TYPE "postdomtree" 24dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 2594108ab8a36806d5c7fb56bed4ddffda064f5c5dChris Lattner//===----------------------------------------------------------------------===// 263dc6776b338f81e2d47daa42cc12c9f91053043dOwen Anderson// PostDominatorTree Implementation 27442b32b5c5f690bc9b49d67b3ec76008879bc4d9Nate Begeman//===----------------------------------------------------------------------===// 28442b32b5c5f690bc9b49d67b3ec76008879bc4d9Nate Begeman 291997473cf72957d0e70322e2fe6fe2ab141c58a6Devang Patelchar PostDominatorTree::ID = 0; 30d13db2c59cc94162d6cf0a04187d408bfef6d4a7Owen AndersonINITIALIZE_PASS(PostDominatorTree, "postdomtree", 31ce665bd2e2b581ab0858d1afe359192bac96b868Owen Anderson "Post-Dominator Tree Construction", true, true) 32442b32b5c5f690bc9b49d67b3ec76008879bc4d9Nate Begeman 33471ab54df756f2f48c9146ad897672662c3f25f9Owen Andersonbool PostDominatorTree::runOnFunction(Function &F) { 34d20cc14dbf6d54d896e67b9920cd9bccdc14c41aOwen Anderson DT->recalculate(F); 35471ab54df756f2f48c9146ad897672662c3f25f9Owen Anderson return false; 36471ab54df756f2f48c9146ad897672662c3f25f9Owen Anderson} 37471ab54df756f2f48c9146ad897672662c3f25f9Owen Anderson 38791102fb1192ac9483274e54cbc42480c9b1af10Chris LattnerPostDominatorTree::~PostDominatorTree() { 39f6055806d4a6a39c49c441215a9a5d3a8e933de0Torok Edwin delete DT; 40f6055806d4a6a39c49c441215a9a5d3a8e933de0Torok Edwin} 41f6055806d4a6a39c49c441215a9a5d3a8e933de0Torok Edwin 4245cfe545ec8177262dabc70580ce05feaa1c3880Chris Lattnervoid PostDominatorTree::print(raw_ostream &OS, const Module *) const { 4345cfe545ec8177262dabc70580ce05feaa1c3880Chris Lattner DT->print(OS); 44791102fb1192ac9483274e54cbc42480c9b1af10Chris Lattner} 45791102fb1192ac9483274e54cbc42480c9b1af10Chris Lattner 46791102fb1192ac9483274e54cbc42480c9b1af10Chris Lattner 475771d6c16d71dc3bba59b88592686c76f07f4721Owen AndersonFunctionPass* llvm::createPostDomTree() { 485771d6c16d71dc3bba59b88592686c76f07f4721Owen Anderson return new PostDominatorTree(); 495771d6c16d71dc3bba59b88592686c76f07f4721Owen Anderson} 505771d6c16d71dc3bba59b88592686c76f07f4721Owen Anderson 51