1023 {
1026
1028 {
1030 if (SVFUtil::isa<AddrStmt>(
edge))
1031 {
1033 }
1034 else if (SVFUtil::isa<CopyStmt>(
edge))
1035 {
1037 }
1038 else if (SVFUtil::isa<RetPE>(
edge))
1039 {
1040 rawstr <<
"color=black,style=dotted";
1041 }
1042 else if (SVFUtil::isa<GepStmt>(
edge))
1043 {
1044 rawstr <<
"color=purple";
1045 }
1046 else if (SVFUtil::isa<StoreStmt>(
edge))
1047 {
1049 }
1050 else if (SVFUtil::isa<LoadStmt>(
edge))
1051 {
1053 }
1054 else
1055 {
1056 assert(0 &&
"No such kind edge!!");
1057 }
1059 }
1060 else if(SVFUtil::isa<MSSAPHISVFGNode>(node))
1061 {
1063 }
1064 else if(SVFUtil::isa<PHISVFGNode>(node))
1065 {
1067 }
1068 else if(SVFUtil::isa<NullPtrSVFGNode>(node))
1069 {
1071 }
1072 else if(SVFUtil::isa<FormalINSVFGNode>(node))
1073 {
1074 rawstr <<
"color=yellow,penwidth=2";
1075 }
1076 else if(SVFUtil::isa<FormalOUTSVFGNode>(node))
1077 {
1078 rawstr <<
"color=yellow,penwidth=2";
1079 }
1080 else if(SVFUtil::isa<FormalParmSVFGNode>(node))
1081 {
1082 rawstr <<
"color=yellow,penwidth=2";
1083 }
1084 else if(SVFUtil::isa<ActualINSVFGNode>(node))
1085 {
1086 rawstr <<
"color=yellow,penwidth=2";
1087 }
1088 else if(SVFUtil::isa<ActualOUTSVFGNode>(node))
1089 {
1090 rawstr <<
"color=yellow,penwidth=2";
1091 }
1092 else if(SVFUtil::isa<ActualParmSVFGNode>(node))
1093 {
1094 rawstr <<
"color=yellow,penwidth=2";
1095 }
1096 else if (SVFUtil::isa<ActualRetSVFGNode>(node))
1097 {
1098 rawstr <<
"color=yellow,penwidth=2";
1099 }
1100 else if (SVFUtil::isa<FormalRetSVFGNode>(node))
1101 {
1102 rawstr <<
"color=yellow,penwidth=2";
1103 }
1104 else if (SVFUtil::isa<BinaryOPVFGNode>(node))
1105 {
1106 rawstr <<
"color=black,penwidth=2";
1107 }
1108 else if (SVFUtil::isa<CmpVFGNode>(node))
1109 {
1110 rawstr <<
"color=black,penwidth=2";
1111 }
1112 else if (SVFUtil::isa<UnaryOPVFGNode>(node))
1113 {
1114 rawstr <<
"color=black,penwidth=2";
1115 }
1116 else if (SVFUtil::isa<BranchVFGNode>(node))
1117 {
1118 rawstr <<
"color=gold,penwidth=2";
1119 }
1120 else
1121 assert(
false &&
"no such kind of node!!");
1122
1125 {
1126 rawstr <<
",style=filled, fillcolor=red";
1127 }
1129 {
1130 rawstr <<
",style=filled, fillcolor=blue";
1131 }
1133 {
1134 rawstr <<
",style=filled, fillcolor=yellow";
1135 }
1137 rawstr <<
",style=filled, fillcolor=gray";
1138
1140
1142 }
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.