From c8717b1624bfdbca3183de1317be2f92a65106e5 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 16 Oct 2004 18:06:43 +0000 Subject: [PATCH] Add support for the unreachable instruction git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17039 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Support/InstVisitor.h | 1 + include/llvm/Transforms/Utils/UnifyFunctionExitNodes.h | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/include/llvm/Support/InstVisitor.h b/include/llvm/Support/InstVisitor.h index c8e7cf98d05..a9b3b715065 100644 --- a/include/llvm/Support/InstVisitor.h +++ b/include/llvm/Support/InstVisitor.h @@ -156,6 +156,7 @@ struct InstVisitor { RetTy visitSwitchInst(SwitchInst &I) { DELEGATE(TerminatorInst);} RetTy visitInvokeInst(InvokeInst &I) { DELEGATE(TerminatorInst);} RetTy visitUnwindInst(UnwindInst &I) { DELEGATE(TerminatorInst);} + RetTy visitUnreachableInst(UnreachableInst &I) { DELEGATE(TerminatorInst);} RetTy visitSetCondInst(SetCondInst &I) { DELEGATE(BinaryOperator);} RetTy visitMallocInst(MallocInst &I) { DELEGATE(AllocationInst);} RetTy visitAllocaInst(AllocaInst &I) { DELEGATE(AllocationInst);} diff --git a/include/llvm/Transforms/Utils/UnifyFunctionExitNodes.h b/include/llvm/Transforms/Utils/UnifyFunctionExitNodes.h index 590d51034bd..6202f85792e 100644 --- a/include/llvm/Transforms/Utils/UnifyFunctionExitNodes.h +++ b/include/llvm/Transforms/Utils/UnifyFunctionExitNodes.h @@ -23,18 +23,19 @@ namespace llvm { struct UnifyFunctionExitNodes : public FunctionPass { - BasicBlock *ReturnBlock, *UnwindBlock; + BasicBlock *ReturnBlock, *UnwindBlock, *UnreachableBlock; public: UnifyFunctionExitNodes() : ReturnBlock(0), UnwindBlock(0) {} // We can preserve non-critical-edgeness when we unify function exit nodes virtual void getAnalysisUsage(AnalysisUsage &AU) const; - // getReturn|UnwindBlock - Return the new single (or nonexistant) return or - // unwind basic blocks in the CFG. + // getReturn|Unwind|UnreachableBlock - Return the new single (or nonexistant) + // return, unwind, or unreachable basic blocks in the CFG. // BasicBlock *getReturnBlock() const { return ReturnBlock; } BasicBlock *getUnwindBlock() const { return UnwindBlock; } + BasicBlock *getUnreachableBlock() const { return UnreachableBlock; } virtual bool runOnFunction(Function &F); }; -- 2.11.0