798 {
800 if (SVFUtil::isa<ValVar>(node))
801 {
802 if(SVFUtil::isa<GepValVar>(node))
803 return "shape=hexagon";
804 else if (SVFUtil::isa<DummyValVar>(node))
805 return "shape=diamond";
806 else
807 return "shape=box";
808 }
809 else if (SVFUtil::isa<ObjVar>(node))
810 {
811 if(SVFUtil::isa<GepObjVar>(node))
812 return "shape=doubleoctagon";
813 else if(SVFUtil::isa<BaseObjVar>(node))
814 return "shape=box3d";
815 else if (SVFUtil::isa<DummyObjVar>(node))
816 return "shape=tab";
817 else
818 return "shape=component";
819 }
820 else if (SVFUtil::isa<RetValPN>(node))
821 {
822 return "shape=Mrecord";
823 }
824 else if (SVFUtil::isa<VarArgValPN>(node))
825 {
826 return "shape=octagon";
827 }
828 else
829 {
830 assert(0 &&
"no such kind!!");
831 }
832 return "";
833 }
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.