1009 {
1012
1014 {
1016 if (SVFUtil::isa<AddrStmt>(
edge))
1017 {
1019 }
1020 else if (SVFUtil::isa<CopyStmt>(
edge))
1021 {
1023 }
1024 else if (SVFUtil::isa<RetPE>(
edge))
1025 {
1026 rawstr <<
"color=black,style=dotted";
1027 }
1028 else if (SVFUtil::isa<GepStmt>(
edge))
1029 {
1030 rawstr <<
"color=purple";
1031 }
1032 else if (SVFUtil::isa<StoreStmt>(
edge))
1033 {
1035 }
1036 else if (SVFUtil::isa<LoadStmt>(
edge))
1037 {
1039 }
1040 else
1041 {
1042 assert(0 &&
"No such kind edge!!");
1043 }
1045 }
1046 else if(SVFUtil::isa<MSSAPHISVFGNode>(node))
1047 {
1049 }
1050 else if(SVFUtil::isa<PHISVFGNode>(node))
1051 {
1053 }
1054 else if(SVFUtil::isa<NullPtrSVFGNode>(node))
1055 {
1057 }
1058 else if(SVFUtil::isa<FormalINSVFGNode>(node))
1059 {
1060 rawstr <<
"color=yellow,penwidth=2";
1061 }
1062 else if(SVFUtil::isa<FormalOUTSVFGNode>(node))
1063 {
1064 rawstr <<
"color=yellow,penwidth=2";
1065 }
1066 else if(SVFUtil::isa<FormalParmSVFGNode>(node))
1067 {
1068 rawstr <<
"color=yellow,penwidth=2";
1069 }
1070 else if(SVFUtil::isa<ActualINSVFGNode>(node))
1071 {
1072 rawstr <<
"color=yellow,penwidth=2";
1073 }
1074 else if(SVFUtil::isa<ActualOUTSVFGNode>(node))
1075 {
1076 rawstr <<
"color=yellow,penwidth=2";
1077 }
1078 else if(SVFUtil::isa<ActualParmSVFGNode>(node))
1079 {
1080 rawstr <<
"color=yellow,penwidth=2";
1081 }
1082 else if (SVFUtil::isa<ActualRetSVFGNode>(node))
1083 {
1084 rawstr <<
"color=yellow,penwidth=2";
1085 }
1086 else if (SVFUtil::isa<FormalRetSVFGNode>(node))
1087 {
1088 rawstr <<
"color=yellow,penwidth=2";
1089 }
1090 else if (SVFUtil::isa<BinaryOPVFGNode>(node))
1091 {
1092 rawstr <<
"color=black,penwidth=2";
1093 }
1094 else if (SVFUtil::isa<CmpVFGNode>(node))
1095 {
1096 rawstr <<
"color=black,penwidth=2";
1097 }
1098 else if (SVFUtil::isa<UnaryOPVFGNode>(node))
1099 {
1100 rawstr <<
"color=black,penwidth=2";
1101 }
1102 else if (SVFUtil::isa<BranchVFGNode>(node))
1103 {
1104 rawstr <<
"color=gold,penwidth=2";
1105 }
1106 else
1107 assert(
false &&
"no such kind of node!!");
1108
1111 {
1112 rawstr <<
",style=filled, fillcolor=red";
1113 }
1115 {
1116 rawstr <<
",style=filled, fillcolor=blue";
1117 }
1119 {
1120 rawstr <<
",style=filled, fillcolor=yellow";
1121 }
1123 rawstr <<
",style=filled, fillcolor=gray";
1124
1126
1128 }
bool inBackwardSlice(const SVFGNode *node) const
bool isSource(const SVFGNode *node) const
bool inForwardSlice(const SVFGNode *node) const
bool isSink(const SVFGNode *node) const
SVFGStat * getStat() const
Return statistics.