Add AE function entry mode on latest master#1826
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #1826 +/- ##
==========================================
+ Coverage 64.42% 64.44% +0.02%
==========================================
Files 252 252
Lines 25181 25208 +27
Branches 4763 4768 +5
==========================================
+ Hits 16223 16246 +23
- Misses 8958 8962 +4
🚀 New features to boost your workflow:
|
| } | ||
| }); | ||
| const OptionMap<u32_t> Options::FunEntry( | ||
| "fun-entry", |
There was a problem hiding this comment.
ae-fun-entry
fixed
| WIDEN_NARROW | ||
| }; | ||
|
|
||
| enum FunEntryMode |
There was a problem hiding this comment.
AEFunEntryMode
fixed
| if (mergeStatesFromPredecessors(node)) | ||
| if (node->getInEdges().empty()) | ||
| { | ||
| updateAbsState(node, getAbsState(globalNode)); | ||
| handleICFGNode(node); | ||
| } | ||
| else if (mergeStatesFromPredecessors(node)) | ||
| handleICFGNode(node); | ||
| } | ||
| else if (const ICFGCycleWTO* cycle = SVFUtil::dyn_cast<ICFGCycleWTO>(comp)) | ||
| { | ||
| if (mergeStatesFromPredecessors(cycle->head()->getICFGNode())) | ||
| const ICFGNode* node = cycle->head()->getICFGNode(); | ||
| if (node->getInEdges().empty()) | ||
| { | ||
| updateAbsState(node, getAbsState(globalNode)); | ||
| handleLoopOrRecursion(cycle, caller); | ||
| } | ||
| else if (mergeStatesFromPredecessors(node)) |
There was a problem hiding this comment.
It is unclear to me why we need to change this?
There was a problem hiding this comment.
It is unclear to me why we need to change this?
Because GlobalICFGNode just connects to FunEntryNode of Main Function. If there's no main function, FunEntryNode of no-caller Functions should inherit actively from GlobalNode.
There was a problem hiding this comment.
It should be handled in this loop at line 176 (entryFunctions should include all no-caller functions):
// handle Global ICFGNode of SVFModule
handleGlobalNode();
for (const FunObjVar* entryFun : entryFunctions)
{
const ICFGNode* funEntry = icfg->getFunEntryICFGNode(entryFun);
updateAbsState(node, getAbsState(globalNode));
handleFunction(funEntry);
}
4a9e39e to
10b84a7
Compare
10b84a7 to
770f478
Compare
No description provided.