mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-23 04:28:30 +00:00
Add support for the unreachable instruction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17039 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7eb8a52332
commit
c8717b1624
@ -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);}
|
||||
|
@ -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);
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user