Skip to content

Commit dbaf69c

Browse files
committed
improve isNonPtrFieldObj for pointer analysis
1 parent 4850db7 commit dbaf69c

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

lib/MemoryModel/SVFIR.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -696,15 +696,21 @@ bool SVFIR::isNonPointerObj(NodeID id) const
696696
SVFVar* node = getGNode(id);
697697
if (const FIObjVar* fiNode = SVFUtil::dyn_cast<FIObjVar>(node))
698698
{
699-
return (fiNode->getMemObj()->isNonPtrFieldObj(0));
699+
if(Options::FirstFieldEqBase)
700+
return fiNode->getMemObj()->isNonPtrFieldObj(0);
701+
else
702+
return (fiNode->getMemObj()->hasPtrObj()==false);
700703
}
701704
else if (const GepObjVar* gepNode = SVFUtil::dyn_cast<GepObjVar>(node))
702705
{
703706
return (gepNode->getMemObj()->isNonPtrFieldObj(gepNode->getLocationSet()));
704707
}
705708
else if (const DummyObjVar* dummyNode = SVFUtil::dyn_cast<DummyObjVar>(node))
706709
{
707-
return (dummyNode->getMemObj()->hasPtrObj()==false);
710+
if(Options::FirstFieldEqBase)
711+
return dummyNode->getMemObj()->isNonPtrFieldObj(0);
712+
else
713+
return (dummyNode->getMemObj()->hasPtrObj()==false);
708714
}
709715
else
710716
{

lib/MemoryModel/SymbolTableInfo.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -614,8 +614,8 @@ u32_t SymbolTableInfo::getTypeSizeInBytes(const StructType *sty, u32_t field_idx
614614
*/
615615
bool ObjTypeInfo::isNonPtrFieldObj(const LocationSet& ls)
616616
{
617-
if (isHeap() || isStaticObj())
618-
return false;
617+
if (hasPtrObj() == false)
618+
return true;
619619

620620
const Type* ety = getType();
621621
while (const ArrayType *AT= SVFUtil::dyn_cast<ArrayType>(ety))
@@ -648,7 +648,6 @@ bool ObjTypeInfo::isNonPtrFieldObj(const LocationSet& ls)
648648
}
649649
}
650650

651-
652651
/*!
653652
* Set mem object to be field sensitive (up to maximum field limit)
654653
*/

0 commit comments

Comments
 (0)