зеркало из https://github.com/dotnet/llilc.git
Delete uncalled flow-graph-related methods.
This commit is contained in:
Родитель
03b1c07e25
Коммит
643b68eba0
|
@ -539,14 +539,10 @@ IRNode *fgNodeGetStartIRNode(FlowGraphNode *FgNode);
|
||||||
// Get the first non-placekeeping node in block
|
// Get the first non-placekeeping node in block
|
||||||
IRNode *fgNodeGetStartInsertIRNode(FlowGraphNode *FgNode);
|
IRNode *fgNodeGetStartInsertIRNode(FlowGraphNode *FgNode);
|
||||||
|
|
||||||
// Get the special block-end placekeeping node
|
|
||||||
IRNode *fgNodeGetEndIRNode(FlowGraphNode *FgNode);
|
|
||||||
|
|
||||||
// Get the last non-placekeeping node in block
|
// Get the last non-placekeeping node in block
|
||||||
IRNode *fgNodeGetEndInsertIRNode(FlowGraphNode *FgNode);
|
IRNode *fgNodeGetEndInsertIRNode(FlowGraphNode *FgNode);
|
||||||
|
|
||||||
IRNode *fgNodeGetEndIRInsertionPoint(FlowGraphNode *FgNode);
|
IRNode *fgNodeGetEndIRInsertionPoint(FlowGraphNode *FgNode);
|
||||||
void fgNodeSetIBCNotReal(FlowGraphNode *Fg);
|
|
||||||
|
|
||||||
GlobalVerifyData *fgNodeGetGlobalVerifyData(FlowGraphNode *Fg);
|
GlobalVerifyData *fgNodeGetGlobalVerifyData(FlowGraphNode *Fg);
|
||||||
void fgNodeSetGlobalVerifyData(FlowGraphNode *Fg, GlobalVerifyData *GvData);
|
void fgNodeSetGlobalVerifyData(FlowGraphNode *Fg, GlobalVerifyData *GvData);
|
||||||
|
@ -558,9 +554,9 @@ FlowGraphEdgeList *fgEdgeListGetNextPredecessor(FlowGraphEdgeList *FgEdge);
|
||||||
FlowGraphNode *fgEdgeListGetSource(FlowGraphEdgeList *FgEdge);
|
FlowGraphNode *fgEdgeListGetSource(FlowGraphEdgeList *FgEdge);
|
||||||
FlowGraphNode *fgEdgeListGetSink(FlowGraphEdgeList *FgEdge);
|
FlowGraphNode *fgEdgeListGetSink(FlowGraphEdgeList *FgEdge);
|
||||||
bool fgEdgeListIsNominal(FlowGraphEdgeList *FgEdge);
|
bool fgEdgeListIsNominal(FlowGraphEdgeList *FgEdge);
|
||||||
bool fgEdgeListIsHandler(FlowGraphEdgeList *FgEdge);
|
#ifdef CC_PEVERIFY
|
||||||
bool fgEdgeListIsFake(FlowGraphEdgeList *FgEdge);
|
|
||||||
void fgEdgeListMakeFake(FlowGraphEdgeList *FgEdge);
|
void fgEdgeListMakeFake(FlowGraphEdgeList *FgEdge);
|
||||||
|
#endif
|
||||||
|
|
||||||
FlowGraphEdgeList *fgEdgeListGetNextSuccessorActual(FlowGraphEdgeList *FgEdge);
|
FlowGraphEdgeList *fgEdgeListGetNextSuccessorActual(FlowGraphEdgeList *FgEdge);
|
||||||
FlowGraphEdgeList *
|
FlowGraphEdgeList *
|
||||||
|
@ -1812,7 +1808,6 @@ public:
|
||||||
virtual void fgPostPhase(void) = 0;
|
virtual void fgPostPhase(void) = 0;
|
||||||
virtual FlowGraphNode *fgGetHeadBlock(void) = 0;
|
virtual FlowGraphNode *fgGetHeadBlock(void) = 0;
|
||||||
virtual FlowGraphNode *fgGetTailBlock(void) = 0;
|
virtual FlowGraphNode *fgGetTailBlock(void) = 0;
|
||||||
virtual uint32_t fgGetBlockCount(void) = 0;
|
|
||||||
virtual FlowGraphNode *fgNodeGetIDom(FlowGraphNode *Fg) = 0;
|
virtual FlowGraphNode *fgNodeGetIDom(FlowGraphNode *Fg) = 0;
|
||||||
|
|
||||||
virtual IRNode *fgNodeFindStartLabel(FlowGraphNode *Block) = 0;
|
virtual IRNode *fgNodeFindStartLabel(FlowGraphNode *Block) = 0;
|
||||||
|
@ -1827,7 +1822,6 @@ public:
|
||||||
virtual void fgAddArc(IRNode *BranchNode, FlowGraphNode *Source,
|
virtual void fgAddArc(IRNode *BranchNode, FlowGraphNode *Source,
|
||||||
FlowGraphNode *Sink) = 0;
|
FlowGraphNode *Sink) = 0;
|
||||||
virtual bool fgBlockHasFallThrough(FlowGraphNode *Block) = 0;
|
virtual bool fgBlockHasFallThrough(FlowGraphNode *Block) = 0;
|
||||||
virtual bool fgBlockIsRegionEnd(FlowGraphNode *Block) = 0;
|
|
||||||
virtual void fgDeleteBlock(FlowGraphNode *Block) = 0;
|
virtual void fgDeleteBlock(FlowGraphNode *Block) = 0;
|
||||||
virtual void fgDeleteEdge(FlowGraphEdgeList *Arc) = 0;
|
virtual void fgDeleteEdge(FlowGraphEdgeList *Arc) = 0;
|
||||||
virtual void fgDeleteNodesFromBlock(FlowGraphNode *Block) = 0;
|
virtual void fgDeleteNodesFromBlock(FlowGraphNode *Block) = 0;
|
||||||
|
@ -1862,7 +1856,6 @@ public:
|
||||||
|
|
||||||
virtual IRNode *fgMakeSwitch(IRNode *DefaultLabel, IRNode *Node) = 0;
|
virtual IRNode *fgMakeSwitch(IRNode *DefaultLabel, IRNode *Node) = 0;
|
||||||
virtual IRNode *fgMakeThrow(IRNode *Node) = 0;
|
virtual IRNode *fgMakeThrow(IRNode *Node) = 0;
|
||||||
virtual IRNode *fgMakeRethrow(IRNode *Node) = 0;
|
|
||||||
virtual IRNode *fgAddCaseToCaseList(IRNode *SwitchNode, IRNode *LabelNode,
|
virtual IRNode *fgAddCaseToCaseList(IRNode *SwitchNode, IRNode *LabelNode,
|
||||||
uint32_t Element) = 0;
|
uint32_t Element) = 0;
|
||||||
virtual void insertEHAnnotationNode(IRNode *InsertionPointNode,
|
virtual void insertEHAnnotationNode(IRNode *InsertionPointNode,
|
||||||
|
@ -1883,9 +1876,6 @@ public:
|
||||||
bool CanInline, bool IsTailCall, bool IsUnmarkedTailCall,
|
bool CanInline, bool IsTailCall, bool IsUnmarkedTailCall,
|
||||||
bool IsReadOnly) = 0;
|
bool IsReadOnly) = 0;
|
||||||
|
|
||||||
// Hook to permit client to record when calls feed branches
|
|
||||||
virtual void fgCmp(ReaderBaseNS::OPCODE) = 0;
|
|
||||||
|
|
||||||
// Replace all uses of oldNode in the IR with newNode and delete oldNode.
|
// Replace all uses of oldNode in the IR with newNode and delete oldNode.
|
||||||
virtual void replaceFlowGraphNodeUses(FlowGraphNode *OldNode,
|
virtual void replaceFlowGraphNodeUses(FlowGraphNode *OldNode,
|
||||||
FlowGraphNode *NewNode) = 0;
|
FlowGraphNode *NewNode) = 0;
|
||||||
|
|
|
@ -489,7 +489,6 @@ public:
|
||||||
void fgPostPhase(void) override;
|
void fgPostPhase(void) override;
|
||||||
FlowGraphNode *fgGetHeadBlock(void) override;
|
FlowGraphNode *fgGetHeadBlock(void) override;
|
||||||
FlowGraphNode *fgGetTailBlock(void) override;
|
FlowGraphNode *fgGetTailBlock(void) override;
|
||||||
unsigned fgGetBlockCount(void) override;
|
|
||||||
FlowGraphNode *fgNodeGetIDom(FlowGraphNode *Fg) override;
|
FlowGraphNode *fgNodeGetIDom(FlowGraphNode *Fg) override;
|
||||||
|
|
||||||
IRNode *fgNodeFindStartLabel(FlowGraphNode *Block) override;
|
IRNode *fgNodeFindStartLabel(FlowGraphNode *Block) override;
|
||||||
|
@ -512,9 +511,6 @@ public:
|
||||||
};
|
};
|
||||||
bool fgBlockHasFallThrough(FlowGraphNode *Block) override;
|
bool fgBlockHasFallThrough(FlowGraphNode *Block) override;
|
||||||
|
|
||||||
bool fgBlockIsRegionEnd(FlowGraphNode *Block) override {
|
|
||||||
throw NotYetImplementedException("fgBlockIsRegionEnd");
|
|
||||||
};
|
|
||||||
void fgDeleteBlock(FlowGraphNode *Block) override;
|
void fgDeleteBlock(FlowGraphNode *Block) override;
|
||||||
void fgDeleteEdge(FlowGraphEdgeList *Arc) override {
|
void fgDeleteEdge(FlowGraphEdgeList *Arc) override {
|
||||||
throw NotYetImplementedException("fgDeleteEdge");
|
throw NotYetImplementedException("fgDeleteEdge");
|
||||||
|
@ -564,9 +560,6 @@ public:
|
||||||
throw NotYetImplementedException("fgMakeSwitch");
|
throw NotYetImplementedException("fgMakeSwitch");
|
||||||
};
|
};
|
||||||
IRNode *fgMakeThrow(IRNode *Insert) override;
|
IRNode *fgMakeThrow(IRNode *Insert) override;
|
||||||
IRNode *fgMakeRethrow(IRNode *Insert) override {
|
|
||||||
throw NotYetImplementedException("fgMakeRethrow");
|
|
||||||
};
|
|
||||||
IRNode *fgAddCaseToCaseList(IRNode *SwitchNode, IRNode *LabelNode,
|
IRNode *fgAddCaseToCaseList(IRNode *SwitchNode, IRNode *LabelNode,
|
||||||
unsigned Element) override {
|
unsigned Element) override {
|
||||||
throw NotYetImplementedException("fgAddCaseToCaseList");
|
throw NotYetImplementedException("fgAddCaseToCaseList");
|
||||||
|
@ -601,11 +594,6 @@ public:
|
||||||
bool CanInline, bool IsTailCall, bool IsUnmarkedTailCall,
|
bool CanInline, bool IsTailCall, bool IsUnmarkedTailCall,
|
||||||
bool IsReadOnly) override;
|
bool IsReadOnly) override;
|
||||||
|
|
||||||
// Hook to permit client to record when calls feed branches
|
|
||||||
void fgCmp(ReaderBaseNS::OPCODE) override {
|
|
||||||
throw NotYetImplementedException("fgCmp");
|
|
||||||
};
|
|
||||||
|
|
||||||
// Replace all uses of oldNode in the IR with newNode and delete oldNode.
|
// Replace all uses of oldNode in the IR with newNode and delete oldNode.
|
||||||
void replaceFlowGraphNodeUses(FlowGraphNode *OldNode,
|
void replaceFlowGraphNodeUses(FlowGraphNode *OldNode,
|
||||||
FlowGraphNode *NewNode) override;
|
FlowGraphNode *NewNode) override;
|
||||||
|
|
|
@ -25,17 +25,8 @@ IRNode *fgNodeGetStartInsertIRNode(FlowGraphNode *FgNode) {
|
||||||
return fgNodeGetStartIRNode(FgNode);
|
return fgNodeGetStartIRNode(FgNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the special block-end placekeeping node
|
|
||||||
IRNode *fgNodeGetEndIRNode(FlowGraphNode *FgNode) {
|
|
||||||
throw NotYetImplementedException("fFgNodeGetEndIRNode");
|
|
||||||
}
|
|
||||||
|
|
||||||
IRNode *fgNodeGetEndIRInsertionPoint(FlowGraphNode *FgNode) { return NULL; }
|
IRNode *fgNodeGetEndIRInsertionPoint(FlowGraphNode *FgNode) { return NULL; }
|
||||||
|
|
||||||
void fgNodeSetIBCNotReal(FlowGraphNode *Fg) {
|
|
||||||
throw NotYetImplementedException("fgNodeSetIBCNotReal");
|
|
||||||
}
|
|
||||||
|
|
||||||
GlobalVerifyData *fgNodeGetGlobalVerifyData(FlowGraphNode *Fg) {
|
GlobalVerifyData *fgNodeGetGlobalVerifyData(FlowGraphNode *Fg) {
|
||||||
throw NotYetImplementedException("fgNodeGetGlobalVerifyData");
|
throw NotYetImplementedException("fgNodeGetGlobalVerifyData");
|
||||||
}
|
}
|
||||||
|
@ -48,17 +39,11 @@ uint32_t fgNodeGetBlockNum(FlowGraphNode *Fg) {
|
||||||
throw NotYetImplementedException("fgNodeGetBlockNum");
|
throw NotYetImplementedException("fgNodeGetBlockNum");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool fgEdgeListIsHandler(FlowGraphEdgeList *FgEdge) {
|
#ifdef CC_PEVERIFY
|
||||||
throw NotYetImplementedException("fgEdgeListIsHandler");
|
|
||||||
}
|
|
||||||
|
|
||||||
bool fgEdgeListIsFake(FlowGraphEdgeList *FgEdge) {
|
|
||||||
throw NotYetImplementedException("fgEdgeListIsFake");
|
|
||||||
}
|
|
||||||
|
|
||||||
void fgEdgeListMakeFake(FlowGraphEdgeList *FgEdge) {
|
void fgEdgeListMakeFake(FlowGraphEdgeList *FgEdge) {
|
||||||
throw NotYetImplementedException("fgEdgeListMakeFake");
|
throw NotYetImplementedException("fgEdgeListMakeFake");
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
IRNode *irNodeGetNext(IRNode *Node) {
|
IRNode *irNodeGetNext(IRNode *Node) {
|
||||||
throw NotYetImplementedException("irNodeGetNext");
|
throw NotYetImplementedException("irNodeGetNext");
|
||||||
|
|
|
@ -3342,7 +3342,8 @@ void ReaderBase::fgBuildPhase1(FlowGraphNode *Block, uint8_t *ILInput,
|
||||||
|
|
||||||
// Make/insert end finally
|
// Make/insert end finally
|
||||||
BlockNode = fgNodeGetStartIRNode(Block);
|
BlockNode = fgNodeGetStartIRNode(Block);
|
||||||
BranchNode = fgMakeEndFinally(BlockNode, CurrentOffset, IsLexicalEnd);
|
BranchNode = fgMakeEndFinallyHelper(BlockNode, CurrentOffset,
|
||||||
|
IsLexicalEnd);
|
||||||
|
|
||||||
// And split the block
|
// And split the block
|
||||||
fgNodeSetEndMSILOffset(Block, NextOffset);
|
fgNodeSetEndMSILOffset(Block, NextOffset);
|
||||||
|
|
|
@ -1848,9 +1848,6 @@ IRNode *GenIR::fgNodeFindStartLabel(FlowGraphNode *Block) { return NULL; }
|
||||||
|
|
||||||
bool GenIR::fgBlockHasFallThrough(FlowGraphNode *Block) { return false; }
|
bool GenIR::fgBlockHasFallThrough(FlowGraphNode *Block) { return false; }
|
||||||
|
|
||||||
unsigned GenIR::fgGetBlockCount() {
|
|
||||||
return Function->getBasicBlockList().size();
|
|
||||||
}
|
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
|
||||||
#pragma region MSIL OPCODES
|
#pragma region MSIL OPCODES
|
||||||
|
|
Загрузка…
Ссылка в новой задаче