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