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