801 {
803 if (SVFUtil::isa<ValVar>(node))
804 {
805 if(SVFUtil::isa<GepValVar>(node))
806 return "shape=hexagon";
807 else if (SVFUtil::isa<DummyValVar>(node))
808 return "shape=diamond";
809 else
810 return "shape=box";
811 }
812 else if (SVFUtil::isa<ObjVar>(node))
813 {
814 if(SVFUtil::isa<GepObjVar>(node))
815 return "shape=doubleoctagon";
816 else if(SVFUtil::isa<BaseObjVar>(node))
817 return "shape=box3d";
818 else if (SVFUtil::isa<DummyObjVar>(node))
819 return "shape=tab";
820 else
821 return "shape=component";
822 }
823 else if (SVFUtil::isa<RetValPN>(node))
824 {
825 return "shape=Mrecord";
826 }
827 else if (SVFUtil::isa<VarArgValPN>(node))
828 {
829 return "shape=octagon";
830 }
831 else
832 {
833 assert(0 &&
"no such kind!!");
834 }
835 return "";
836 }
const SVFVar * getSVFVar(NodeID id) const
ObjVar/GepObjVar/BaseObjVar.
static SVFIR * getPAG(bool buildFromFile=false)
Singleton design here to make sure we only have one instance during any analysis.