svf-tools 1.0.623 → 1.0.625

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +11 -11
  3. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +10 -10
  4. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
  5. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +13 -15
  8. package/SVF-doxygen/html/html/SVFIR2ItvExeState_8h_source.html +12 -12
  9. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +2 -2
  10. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +1 -1
  11. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +2 -2
  12. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +1 -1
  13. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +41 -40
  14. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +2 -2
  15. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +2 -2
  16. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +27 -30
  17. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +7 -7
  18. package/SVF-doxygen/html/html/classSVF_1_1SVFType.html +1 -1
  19. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +3 -3
  20. package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +1 -1
  21. package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
  22. package/lib/AbstractExecution/SVFIR2ItvExeState.cpp +2 -13
  23. package/lib/MemoryModel/PointsTo.cpp +1 -1
  24. package/lib/SVF-LLVM/LLVMModule.cpp +5 -1
  25. package/package.json +1 -1
@@ -958,8 +958,8 @@ Static Private Attributes</h2></td></tr>
958
958
 
959
959
  <p>Create SVFTypes. </p>
960
960
 
961
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01036">1036</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
962
- <div class="fragment"><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;{</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; assert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T)==<a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end() &amp;&amp; <span class="stringliteral">&quot;SVFType has been added before&quot;</span>);</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svftype = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* pt = SVFUtil::dyn_cast&lt;PointerType&gt;(T))</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(pt)));</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;IntegerType&gt;(T))</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFIntergerType.html">SVFIntergerType</a>();</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* ft = SVFUtil::dyn_cast&lt;FunctionType&gt;(T))</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFFunctionType.html">SVFFunctionType</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ft-&gt;getReturnType()));</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType&gt;(T))</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFStructType.html">SVFStructType</a>();</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ArrayType&gt;(T))</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a>();</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFOtherType.html">SVFOtherType</a>(T-&gt;isSingleValueType());</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a91083d9504ae5d220b28e0b3e461d4aa">addTypeInfo</a>(svftype);</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>[T] = svftype;</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <span class="keywordflow">return</span> svftype;</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a6ec0236303089a01fd9da36a8bb84e0a"><div class="ttname"><a href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">SVF::FunctionType</a></div><div class="ttdeci">llvm::FunctionType FunctionType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
961
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01040">1040</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
962
+ <div class="fragment"><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;{</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; assert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T)==<a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end() &amp;&amp; <span class="stringliteral">&quot;SVFType has been added before&quot;</span>);</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svftype = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* pt = SVFUtil::dyn_cast&lt;PointerType&gt;(T))</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(pt)));</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;IntegerType&gt;(T))</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFIntergerType.html">SVFIntergerType</a>();</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* ft = SVFUtil::dyn_cast&lt;FunctionType&gt;(T))</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFFunctionType.html">SVFFunctionType</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ft-&gt;getReturnType()));</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType&gt;(T))</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFStructType.html">SVFStructType</a>();</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ArrayType&gt;(T))</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a>();</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFOtherType.html">SVFOtherType</a>(T-&gt;isSingleValueType());</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a91083d9504ae5d220b28e0b3e461d4aa">addTypeInfo</a>(svftype);</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>[T] = svftype;</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; <span class="keywordflow">return</span> svftype;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a6ec0236303089a01fd9da36a8bb84e0a"><div class="ttname"><a href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">SVF::FunctionType</a></div><div class="ttdeci">llvm::FunctionType FunctionType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
963
963
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a91083d9504ae5d220b28e0b3e461d4aa"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a91083d9504ae5d220b28e0b3e461d4aa">SVF::SymbolTableInfo::addTypeInfo</a></div><div class="ttdeci">void addTypeInfo(const SVFType *ty)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00323">SymbolTableInfo.h:323</a></div></div>
964
964
  <div class="ttc" id="namespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
965
965
  <div class="ttc" id="classSVF_1_1SVFFunctionType_html"><div class="ttname"><a href="classSVF_1_1SVFFunctionType.html">SVF::SVFFunctionType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00345">SVFType.h:345</a></div></div>
@@ -969,7 +969,7 @@ Static Private Attributes</h2></td></tr>
969
969
  <div class="ttc" id="classSVF_1_1SVFArrayType_html"><div class="ttname"><a href="classSVF_1_1SVFArrayType.html">SVF::SVFArrayType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00376">SVFType.h:376</a></div></div>
970
970
  <div class="ttc" id="classSVF_1_1SVFType_html"><div class="ttname"><a href="classSVF_1_1SVFType.html">SVF::SVFType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00233">SVFType.h:233</a></div></div>
971
971
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a067661e0049314779a44c9600420820f"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">SVF::LLVMModuleSet::LLVMType2SVFType</a></div><div class="ttdeci">LLVMType2SVFTypeMap LLVMType2SVFType</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00085">LLVMModule.h:85</a></div></div>
972
- <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00975">LLVMModule.cpp:975</a></div></div>
972
+ <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00979">LLVMModule.cpp:979</a></div></div>
973
973
  <div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_abba4111230f6009bbf50518ee36a9870"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">SVF::LLVMUtil::getPtrElementType</a></div><div class="ttdeci">static Type * getPtrElementType(const PointerType *pty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00121">LLVMUtil.h:121</a></div></div>
974
974
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5552135a27684cbe4d2a5ed346f64644"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">SVF::LLVMModuleSet::symInfo</a></div><div class="ttdeci">SymbolTableInfo * symInfo</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00065">LLVMModule.h:65</a></div></div>
975
975
  <div class="ttc" id="classSVF_1_1SVFStructType_html"><div class="ttname"><a href="classSVF_1_1SVFStructType.html">SVF::SVFStructType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00364">SVFType.h:364</a></div></div>
@@ -1207,17 +1207,17 @@ Static Private Attributes</h2></td></tr>
1207
1207
  <p>Array's flatten field infor is the same as its element's flatten infor.</p>
1208
1208
  <p>Flatten arrays, map each array element index <code>i</code> to flattened index <code>(i * nfE * totalElemNum)/outArrayElemNum</code> nfE&gt;1 if the array element is a struct with more than one field. </p>
1209
1209
 
1210
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01061">1061</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1211
- <div class="fragment"><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;{</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> totalElemNum = ty-&gt;getNumElements();</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = ty-&gt;getElementType();</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast&lt;ArrayType&gt;(elemTy))</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; {</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; totalElemNum *= aty-&gt;getNumElements();</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; elemTy = aty-&gt;getElementType();</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; }</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(totalElemNum);</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="keywordflow">if</span>(totalElemNum==0)</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; {</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(0, <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(elemTy), 0);</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1, 1);</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(elemTy));</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(elemTy));</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; <span class="keywordflow">return</span> stinfo;</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; }</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* elemStInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(elemTy);</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfE; j++)</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; {</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* fieldTy = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(fieldTy);</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; }</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> outArrayElemNum = ty-&gt;getNumElements();</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; outArrayElemNum; i++)</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(0, <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(elemTy), (i * nfE * totalElemNum)/outArrayElemNum);</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; totalElemNum; i++)</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; {</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfE; j++)</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; {</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j]);</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; }</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; }</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; assert(stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == nfE * totalElemNum &amp;&amp; <span class="stringliteral">&quot;typeForArray size incorrect!!!&quot;</span>);</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(nfE, nfE * totalElemNum);</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; <span class="keywordflow">return</span> stinfo;</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
1210
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01065">1065</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1211
+ <div class="fragment"><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;{</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> totalElemNum = ty-&gt;getNumElements();</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = ty-&gt;getElementType();</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast&lt;ArrayType&gt;(elemTy))</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; {</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; totalElemNum *= aty-&gt;getNumElements();</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; elemTy = aty-&gt;getElementType();</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; }</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(totalElemNum);</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <span class="keywordflow">if</span>(totalElemNum==0)</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; {</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(0, <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(elemTy), 0);</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1, 1);</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(elemTy));</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(elemTy));</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="keywordflow">return</span> stinfo;</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; }</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* elemStInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(elemTy);</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfE; j++)</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; {</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* fieldTy = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(fieldTy);</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; }</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> outArrayElemNum = ty-&gt;getNumElements();</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; outArrayElemNum; i++)</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(0, <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(elemTy), (i * nfE * totalElemNum)/outArrayElemNum);</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; totalElemNum; i++)</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; {</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfE; j++)</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; {</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j]);</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; }</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; }</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; assert(stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == nfE * totalElemNum &amp;&amp; <span class="stringliteral">&quot;typeForArray size incorrect!!!&quot;</span>);</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(nfE, nfE * totalElemNum);</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="keywordflow">return</span> stinfo;</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
1212
1212
  <div class="ttc" id="namespaceSVF_html_a146d286041987860388da3d8bc85cee3"><div class="ttname"><a href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">SVF::ArrayType</a></div><div class="ttdeci">llvm::ArrayType ArrayType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00069">BasicTypes.h:69</a></div></div>
1213
1213
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00050">SVFType.h:50</a></div></div>
1214
1214
  <div class="ttc" id="classSVF_1_1StInfo_html_ac0a9f85f90524abfd519d3cd2ac95a56"><div class="ttname"><a href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">SVF::StInfo::getFlattenFieldTypes</a></div><div class="ttdeci">std::vector&lt; const SVFType * &gt; &amp; getFlattenFieldTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00183">SVFType.h:183</a></div></div>
1215
1215
  <div class="ttc" id="classSVF_1_1StInfo_html_aae0736a5e99b11571af52e28500a6f9c"><div class="ttname"><a href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">SVF::StInfo::addFldWithType</a></div><div class="ttdeci">void addFldWithType(u32_t fldIdx, const SVFType *type, u32_t elemIdx)</div><div class="ttdoc">Add field index and element index and their corresponding type. </div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00008">SVFValue.cpp:8</a></div></div>
1216
1216
  <div class="ttc" id="classSVF_1_1StInfo_html_a03bfeee0406c7e54557e74f3a8e848b7"><div class="ttname"><a href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">SVF::StInfo::getFlattenElementTypes</a></div><div class="ttdeci">std::vector&lt; const SVFType * &gt; &amp; getFlattenElementTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00179">SVFType.h:179</a></div></div>
1217
- <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a1f6cc76c996a0577b20b8cedd83fff92"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">SVF::LLVMModuleSet::collectTypeInfo</a></div><div class="ttdeci">StInfo * collectTypeInfo(const Type *ty)</div><div class="ttdoc">Collect a type info. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00994">LLVMModule.cpp:994</a></div></div>
1217
+ <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a1f6cc76c996a0577b20b8cedd83fff92"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">SVF::LLVMModuleSet::collectTypeInfo</a></div><div class="ttdeci">StInfo * collectTypeInfo(const Type *ty)</div><div class="ttdoc">Collect a type info. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00998">LLVMModule.cpp:998</a></div></div>
1218
1218
  <div class="ttc" id="classSVF_1_1SVFType_html"><div class="ttname"><a href="classSVF_1_1SVFType.html">SVF::SVFType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00233">SVFType.h:233</a></div></div>
1219
1219
  <div class="ttc" id="classSVF_1_1StInfo_html_a1a07c2b1415c29d7d70791c6dfe602a3"><div class="ttname"><a href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">SVF::StInfo::setNumOfFieldsAndElems</a></div><div class="ttdeci">void setNumOfFieldsAndElems(u32_t nf, u32_t ne)</div><div class="ttdoc">Set number of fields and elements of an aggrate. </div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00209">SVFType.h:209</a></div></div>
1220
- <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00975">LLVMModule.cpp:975</a></div></div>
1220
+ <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00979">LLVMModule.cpp:979</a></div></div>
1221
1221
  <div class="ttc" id="classSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00131">SVFType.h:131</a></div></div>
1222
1222
  <div class="ttc" id="classSVF_1_1StInfo_html_ae5fad367673315da57a604e64b5889f0"><div class="ttname"><a href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">SVF::StInfo::getNumOfFlattenFields</a></div><div class="ttdeci">u32_t getNumOfFlattenFields() const</div><div class="ttdoc">Return the number of fields after flattenning (ignoring array elements) </div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00222">SVFType.h:222</a></div></div>
1223
1223
  <div class="ttc" id="namespaceSVF_html_a366625858f450a1ea5f985a3c83e0f14"><div class="ttname"><a href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">SVF::u64_t</a></div><div class="ttdeci">unsigned long long u64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00052">SVFType.h:52</a></div></div>
@@ -1262,12 +1262,12 @@ Static Private Attributes</h2></td></tr>
1262
1262
  <p>Collect simple type (non-aggregate) info </p>
1263
1263
  <p>Only one field </p>
1264
1264
 
1265
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01173">1173</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1266
- <div class="fragment"><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;{</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(0, <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ty), 0);</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ty));</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ty));</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1,1);</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; <span class="keywordflow">return</span> stinfo;</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;}</div><div class="ttc" id="classSVF_1_1StInfo_html_ac0a9f85f90524abfd519d3cd2ac95a56"><div class="ttname"><a href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">SVF::StInfo::getFlattenFieldTypes</a></div><div class="ttdeci">std::vector&lt; const SVFType * &gt; &amp; getFlattenFieldTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00183">SVFType.h:183</a></div></div>
1265
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01177">1177</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1266
+ <div class="fragment"><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;{</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(0, <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ty), 0);</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ty));</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ty));</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1,1);</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; <span class="keywordflow">return</span> stinfo;</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;}</div><div class="ttc" id="classSVF_1_1StInfo_html_ac0a9f85f90524abfd519d3cd2ac95a56"><div class="ttname"><a href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">SVF::StInfo::getFlattenFieldTypes</a></div><div class="ttdeci">std::vector&lt; const SVFType * &gt; &amp; getFlattenFieldTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00183">SVFType.h:183</a></div></div>
1267
1267
  <div class="ttc" id="classSVF_1_1StInfo_html_aae0736a5e99b11571af52e28500a6f9c"><div class="ttname"><a href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">SVF::StInfo::addFldWithType</a></div><div class="ttdeci">void addFldWithType(u32_t fldIdx, const SVFType *type, u32_t elemIdx)</div><div class="ttdoc">Add field index and element index and their corresponding type. </div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00008">SVFValue.cpp:8</a></div></div>
1268
1268
  <div class="ttc" id="classSVF_1_1StInfo_html_a03bfeee0406c7e54557e74f3a8e848b7"><div class="ttname"><a href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">SVF::StInfo::getFlattenElementTypes</a></div><div class="ttdeci">std::vector&lt; const SVFType * &gt; &amp; getFlattenElementTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00179">SVFType.h:179</a></div></div>
1269
1269
  <div class="ttc" id="classSVF_1_1StInfo_html_a1a07c2b1415c29d7d70791c6dfe602a3"><div class="ttname"><a href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">SVF::StInfo::setNumOfFieldsAndElems</a></div><div class="ttdeci">void setNumOfFieldsAndElems(u32_t nf, u32_t ne)</div><div class="ttdoc">Set number of fields and elements of an aggrate. </div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00209">SVFType.h:209</a></div></div>
1270
- <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00975">LLVMModule.cpp:975</a></div></div>
1270
+ <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00979">LLVMModule.cpp:979</a></div></div>
1271
1271
  </div><!-- fragment -->
1272
1272
  </div>
1273
1273
  </div>
@@ -1310,17 +1310,17 @@ Static Private Attributes</h2></td></tr>
1310
1310
  <p>The struct info should not be processed before</p>
1311
1311
  <p>offset with int_32 (s32_t) is large enough and will not cause overflow </p>
1312
1312
 
1313
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01118">1118</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1314
- <div class="fragment"><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;{</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(1);</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; <span class="comment">// Number of fields after flattening the struct</span></div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; nf = 0;</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; <span class="comment">// The offset when considering array stride info</span></div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> strideOffset = 0;</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <span class="keywordflow">for</span> (StructType::element_iterator it = sty-&gt;element_begin(), ie =</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; sty-&gt;element_end(); it != ie; ++it)</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; {</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* et = *it;</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(nf, <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(et), strideOffset);</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType, ArrayType&gt;(et))</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; {</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a> * subStinfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(et);</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="comment">//Copy ST&#39;s info, whose element 0 is the size of ST itself.</span></div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfE; j++)</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; {</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemTy = subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemTy);</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; }</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; nf += nfE;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; strideOffset += nfE * subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#af5094ec542f345d214a682d4138cf690">getStride</a>();</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tpi = 0; tpi &lt; subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#af5094ec542f345d214a682d4138cf690">getStride</a>(); tpi++)</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; {</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tpj = 0; tpj &lt; nfE; tpj++)</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; {</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[tpj]);</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; }</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; }</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; }</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; <span class="keywordflow">else</span> <span class="comment">//simple type</span></div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; {</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; nf += 1;</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; strideOffset += 1;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(et));</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(et));</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; }</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; }</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; assert(stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == strideOffset &amp;&amp; <span class="stringliteral">&quot;typeForStruct size incorrect!&quot;</span>);</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(nf,strideOffset);</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; <span class="keywordflow">return</span> stinfo;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
1313
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01122">1122</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1314
+ <div class="fragment"><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;{</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(1);</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <span class="comment">// Number of fields after flattening the struct</span></div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; nf = 0;</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <span class="comment">// The offset when considering array stride info</span></div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> strideOffset = 0;</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; <span class="keywordflow">for</span> (StructType::element_iterator it = sty-&gt;element_begin(), ie =</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; sty-&gt;element_end(); it != ie; ++it)</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; {</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* et = *it;</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(nf, <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(et), strideOffset);</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType, ArrayType&gt;(et))</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; {</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a> * subStinfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(et);</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <span class="comment">//Copy ST&#39;s info, whose element 0 is the size of ST itself.</span></div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfE; j++)</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; {</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemTy = subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemTy);</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; }</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; nf += nfE;</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; strideOffset += nfE * subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#af5094ec542f345d214a682d4138cf690">getStride</a>();</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tpi = 0; tpi &lt; subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#af5094ec542f345d214a682d4138cf690">getStride</a>(); tpi++)</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; {</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tpj = 0; tpj &lt; nfE; tpj++)</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; {</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[tpj]);</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; }</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; }</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; }</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; <span class="keywordflow">else</span> <span class="comment">//simple type</span></div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; {</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; nf += 1;</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; strideOffset += 1;</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(et));</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(et));</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; }</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; }</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; assert(stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == strideOffset &amp;&amp; <span class="stringliteral">&quot;typeForStruct size incorrect!&quot;</span>);</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(nf,strideOffset);</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; <span class="keywordflow">return</span> stinfo;</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00057">BasicTypes.h:57</a></div></div>
1315
1315
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00050">SVFType.h:50</a></div></div>
1316
1316
  <div class="ttc" id="classSVF_1_1StInfo_html_ac0a9f85f90524abfd519d3cd2ac95a56"><div class="ttname"><a href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">SVF::StInfo::getFlattenFieldTypes</a></div><div class="ttdeci">std::vector&lt; const SVFType * &gt; &amp; getFlattenFieldTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00183">SVFType.h:183</a></div></div>
1317
1317
  <div class="ttc" id="classSVF_1_1StInfo_html_aae0736a5e99b11571af52e28500a6f9c"><div class="ttname"><a href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">SVF::StInfo::addFldWithType</a></div><div class="ttdeci">void addFldWithType(u32_t fldIdx, const SVFType *type, u32_t elemIdx)</div><div class="ttdoc">Add field index and element index and their corresponding type. </div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00008">SVFValue.cpp:8</a></div></div>
1318
1318
  <div class="ttc" id="classSVF_1_1StInfo_html_af5094ec542f345d214a682d4138cf690"><div class="ttname"><a href="classSVF_1_1StInfo.html#af5094ec542f345d214a682d4138cf690">SVF::StInfo::getStride</a></div><div class="ttdeci">u32_t getStride() const</div><div class="ttdoc">Return the stride. </div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00227">SVFType.h:227</a></div></div>
1319
1319
  <div class="ttc" id="classSVF_1_1StInfo_html_a03bfeee0406c7e54557e74f3a8e848b7"><div class="ttname"><a href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">SVF::StInfo::getFlattenElementTypes</a></div><div class="ttdeci">std::vector&lt; const SVFType * &gt; &amp; getFlattenElementTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00179">SVFType.h:179</a></div></div>
1320
- <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a1f6cc76c996a0577b20b8cedd83fff92"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">SVF::LLVMModuleSet::collectTypeInfo</a></div><div class="ttdeci">StInfo * collectTypeInfo(const Type *ty)</div><div class="ttdoc">Collect a type info. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00994">LLVMModule.cpp:994</a></div></div>
1320
+ <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a1f6cc76c996a0577b20b8cedd83fff92"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">SVF::LLVMModuleSet::collectTypeInfo</a></div><div class="ttdeci">StInfo * collectTypeInfo(const Type *ty)</div><div class="ttdoc">Collect a type info. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00998">LLVMModule.cpp:998</a></div></div>
1321
1321
  <div class="ttc" id="classSVF_1_1SVFType_html"><div class="ttname"><a href="classSVF_1_1SVFType.html">SVF::SVFType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00233">SVFType.h:233</a></div></div>
1322
1322
  <div class="ttc" id="classSVF_1_1StInfo_html_a1a07c2b1415c29d7d70791c6dfe602a3"><div class="ttname"><a href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">SVF::StInfo::setNumOfFieldsAndElems</a></div><div class="ttdeci">void setNumOfFieldsAndElems(u32_t nf, u32_t ne)</div><div class="ttdoc">Set number of fields and elements of an aggrate. </div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00209">SVFType.h:209</a></div></div>
1323
- <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00975">LLVMModule.cpp:975</a></div></div>
1323
+ <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00979">LLVMModule.cpp:979</a></div></div>
1324
1324
  <div class="ttc" id="classSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00131">SVFType.h:131</a></div></div>
1325
1325
  <div class="ttc" id="classSVF_1_1StInfo_html_ae5fad367673315da57a604e64b5889f0"><div class="ttname"><a href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">SVF::StInfo::getNumOfFlattenFields</a></div><div class="ttdeci">u32_t getNumOfFlattenFields() const</div><div class="ttdoc">Return the number of fields after flattenning (ignoring array elements) </div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00222">SVFType.h:222</a></div></div>
1326
1326
  </div><!-- fragment -->
@@ -1353,18 +1353,18 @@ Static Private Attributes</h2></td></tr>
1353
1353
  <p>Collect a type info. </p>
1354
1354
  <p>The simple type info should not be processed before </p>
1355
1355
 
1356
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00994">994</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1357
- <div class="fragment"><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160;{</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160;</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; Type2TypeInfoMap::iterator tit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.find(T);</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <span class="keywordflow">if</span>(tit!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.end())</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; {</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; stinfo = tit-&gt;second.get();</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; }</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; {</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast&lt;ArrayType&gt;(T))</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; {</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; stinfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">collectArrayInfo</a>(aty);</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>[T] = std::unique_ptr&lt;StInfo&gt;(stinfo);</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; }</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* sty = SVFUtil::dyn_cast&lt;StructType&gt;(T))</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; {</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nf;</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; stinfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a93315673be515ce5c2fabd36fa927128">collectStructInfo</a>(sty, nf);</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>[T] = std::unique_ptr&lt;StInfo&gt;(stinfo);</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; <span class="comment">//Record the size of the complete struct and update max_struct.</span></div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; <span class="keywordflow">if</span> (nf &gt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>)</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; {</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a0c1143eff451edf8ea47d4487a8d3a55">maxStruct</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(sty);</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a> = nf;</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; }</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; }</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; {</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; <span class="keyword">auto</span> stinfo_own = std::make_unique&lt;StInfo&gt;(1);</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; stinfo = stinfo_own.get();</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>[T] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(stinfo_own);</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#abcd6d9513511e6a306189a87fe3dfa06">collectSimpleTypeInfo</a>(stinfo, T);</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; }</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; }</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <span class="keywordflow">return</span> stinfo;</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a146d286041987860388da3d8bc85cee3"><div class="ttname"><a href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">SVF::ArrayType</a></div><div class="ttdeci">llvm::ArrayType ArrayType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00069">BasicTypes.h:69</a></div></div>
1358
- <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a93315673be515ce5c2fabd36fa927128"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a93315673be515ce5c2fabd36fa927128">SVF::LLVMModuleSet::collectStructInfo</a></div><div class="ttdeci">StInfo * collectStructInfo(const StructType *T, u32_t &amp;nf)</div><div class="ttdoc">Collect the struct info; nf contains the number of fields after flattening. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01118">LLVMModule.cpp:1118</a></div></div>
1356
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00998">998</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1357
+ <div class="fragment"><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160;{</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; Type2TypeInfoMap::iterator tit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.find(T);</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <span class="keywordflow">if</span>(tit!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.end())</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; {</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; stinfo = tit-&gt;second.get();</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; }</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; {</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast&lt;ArrayType&gt;(T))</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; {</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; stinfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">collectArrayInfo</a>(aty);</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>[T] = std::unique_ptr&lt;StInfo&gt;(stinfo);</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; }</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* sty = SVFUtil::dyn_cast&lt;StructType&gt;(T))</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; {</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nf;</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; stinfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a93315673be515ce5c2fabd36fa927128">collectStructInfo</a>(sty, nf);</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>[T] = std::unique_ptr&lt;StInfo&gt;(stinfo);</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <span class="comment">//Record the size of the complete struct and update max_struct.</span></div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; <span class="keywordflow">if</span> (nf &gt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>)</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; {</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a0c1143eff451edf8ea47d4487a8d3a55">maxStruct</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(sty);</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a> = nf;</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; }</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; }</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; {</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; <span class="keyword">auto</span> stinfo_own = std::make_unique&lt;StInfo&gt;(1);</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; stinfo = stinfo_own.get();</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>[T] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(stinfo_own);</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#abcd6d9513511e6a306189a87fe3dfa06">collectSimpleTypeInfo</a>(stinfo, T);</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; }</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; }</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; <span class="keywordflow">return</span> stinfo;</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a146d286041987860388da3d8bc85cee3"><div class="ttname"><a href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">SVF::ArrayType</a></div><div class="ttdeci">llvm::ArrayType ArrayType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00069">BasicTypes.h:69</a></div></div>
1358
+ <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a93315673be515ce5c2fabd36fa927128"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a93315673be515ce5c2fabd36fa927128">SVF::LLVMModuleSet::collectStructInfo</a></div><div class="ttdeci">StInfo * collectStructInfo(const StructType *T, u32_t &amp;nf)</div><div class="ttdoc">Collect the struct info; nf contains the number of fields after flattening. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01122">LLVMModule.cpp:1122</a></div></div>
1359
1359
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00050">SVFType.h:50</a></div></div>
1360
- <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_aa8de934358332505d4805db137d8ec29"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">SVF::LLVMModuleSet::collectArrayInfo</a></div><div class="ttdeci">StInfo * collectArrayInfo(const ArrayType *T)</div><div class="ttdoc">Collect the array info. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01061">LLVMModule.cpp:1061</a></div></div>
1360
+ <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_aa8de934358332505d4805db137d8ec29"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">SVF::LLVMModuleSet::collectArrayInfo</a></div><div class="ttdeci">StInfo * collectArrayInfo(const ArrayType *T)</div><div class="ttdoc">Collect the array info. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01065">LLVMModule.cpp:1065</a></div></div>
1361
1361
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_abb8550c9ef856e45cb7675c3796f9a35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">SVF::SymbolTableInfo::maxStSize</a></div><div class="ttdeci">u32_t maxStSize</div><div class="ttdoc">The number of fields in max_struct. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00321">SymbolTableInfo.h:321</a></div></div>
1362
1362
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a72502f7f536418621485e90ab98c2016"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">SVF::SVFUtil::move</a></div><div class="ttdeci">constexpr std::remove_reference&lt; T &gt;::type &amp;&amp; move(T &amp;&amp;t) noexcept</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00657">SVFUtil.h:657</a></div></div>
1363
1363
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a0c1143eff451edf8ea47d4487a8d3a55"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a0c1143eff451edf8ea47d4487a8d3a55">SVF::SymbolTableInfo::maxStruct</a></div><div class="ttdeci">const SVFType * maxStruct</div><div class="ttdoc">The struct type with the most fields. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00318">SymbolTableInfo.h:318</a></div></div>
1364
1364
  <div class="ttc" id="namespaceSVF_html_a2bf58575ac7d068e0f1a4cf953b9e6cb"><div class="ttname"><a href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">SVF::StructType</a></div><div class="ttdeci">llvm::StructType StructType</div><div class="ttdoc">LLVM types. </div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00068">BasicTypes.h:68</a></div></div>
1365
- <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_abcd6d9513511e6a306189a87fe3dfa06"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#abcd6d9513511e6a306189a87fe3dfa06">SVF::LLVMModuleSet::collectSimpleTypeInfo</a></div><div class="ttdeci">StInfo * collectSimpleTypeInfo(StInfo *info, const Type *T)</div><div class="ttdoc">Collect simple type (non-aggregate) info. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01173">LLVMModule.cpp:1173</a></div></div>
1365
+ <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_abcd6d9513511e6a306189a87fe3dfa06"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#abcd6d9513511e6a306189a87fe3dfa06">SVF::LLVMModuleSet::collectSimpleTypeInfo</a></div><div class="ttdeci">StInfo * collectSimpleTypeInfo(StInfo *info, const Type *T)</div><div class="ttdoc">Collect simple type (non-aggregate) info. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01177">LLVMModule.cpp:1177</a></div></div>
1366
1366
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_af2c555af91679d9e6d3009547ee11486"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">SVF::LLVMModuleSet::Type2TypeInfo</a></div><div class="ttdeci">Type2TypeInfoMap Type2TypeInfo</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00086">LLVMModule.h:86</a></div></div>
1367
- <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00975">LLVMModule.cpp:975</a></div></div>
1367
+ <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00979">LLVMModule.cpp:979</a></div></div>
1368
1368
  <div class="ttc" id="classSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00131">SVFType.h:131</a></div></div>
1369
1369
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5552135a27684cbe4d2a5ed346f64644"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">SVF::LLVMModuleSet::symInfo</a></div><div class="ttdeci">SymbolTableInfo * symInfo</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00065">LLVMModule.h:65</a></div></div>
1370
1370
  </div><!-- fragment -->
@@ -1424,7 +1424,7 @@ Static Private Attributes</h2></td></tr>
1424
1424
  <div class="ttc" id="namespaceSVF_html_a1f4624771922dc8c2447ad7433588c73"><div class="ttname"><a href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">SVF::CallBase</a></div><div class="ttdeci">llvm::CallBase CallBase</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00119">BasicTypes.h:119</a></div></div>
1425
1425
  <div class="ttc" id="classSVF_1_1SVFFunction_html_a0d5031bd11b6372803082111ec2cb4f6"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a0d5031bd11b6372803082111ec2cb4f6">SVF::SVFFunction::addBasicBlock</a></div><div class="ttdeci">void addBasicBlock(const SVFBasicBlock *bb)</div><div class="ttdoc">all formal arguments of this function </div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00283">SVFValue.h:283</a></div></div>
1426
1426
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a7de84e7817406867b173e1591e0681ac"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a7de84e7817406867b173e1591e0681ac">SVF::LLVMModuleSet::addGlobalValueMap</a></div><div class="ttdeci">void addGlobalValueMap(const GlobalValue *glob, SVFGlobalValue *svfglob)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00164">LLVMModule.h:164</a></div></div>
1427
- <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00975">LLVMModule.cpp:975</a></div></div>
1427
+ <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00979">LLVMModule.cpp:979</a></div></div>
1428
1428
  <div class="ttc" id="classSVF_1_1SVFBasicBlock_html_ac1b15d8f9c2499add8dbc889ae5cab65"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#ac1b15d8f9c2499add8dbc889ae5cab65">SVF::SVFBasicBlock::addInstruction</a></div><div class="ttdeci">void addInstruction(const SVFInstruction *inst)</div><div class="ttdoc">Function where this BasicBlock is. </div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00486">SVFValue.h:486</a></div></div>
1429
1429
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a3e14bbb3ae0acc74775ac3233a84d379"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">SVF::LLVMModuleSet::svfModule</a></div><div class="ttdeci">std::unique_ptr&lt; SVFModule &gt; svfModule</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00066">LLVMModule.h:66</a></div></div>
1430
1430
  </div><!-- fragment -->
@@ -1711,8 +1711,8 @@ Static Private Attributes</h2></td></tr>
1711
1711
 
1712
1712
  <p>Get LLVM Type. </p>
1713
1713
 
1714
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00961">961</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1715
- <div class="fragment"><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160;{</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <span class="keywordflow">for</span>(LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.begin(), eit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end(); it!=eit; ++it)</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; {</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="keywordflow">if</span> (it-&gt;second == T)</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <span class="keywordflow">return</span> it-&gt;first;</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; }</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;can&#39;t find the corresponding LLVM Type&quot;</span>);</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; abort();</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160;}</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a067661e0049314779a44c9600420820f"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">SVF::LLVMModuleSet::LLVMType2SVFType</a></div><div class="ttdeci">LLVMType2SVFTypeMap LLVMType2SVFType</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00085">LLVMModule.h:85</a></div></div>
1714
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00965">965</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1715
+ <div class="fragment"><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160;{</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; <span class="keywordflow">for</span>(LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.begin(), eit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end(); it!=eit; ++it)</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; {</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="keywordflow">if</span> (it-&gt;second == T)</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="keywordflow">return</span> it-&gt;first;</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; }</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;can&#39;t find the corresponding LLVM Type&quot;</span>);</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; abort();</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160;}</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a067661e0049314779a44c9600420820f"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">SVF::LLVMModuleSet::LLVMType2SVFType</a></div><div class="ttdeci">LLVMType2SVFTypeMap LLVMType2SVFType</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00085">LLVMModule.h:85</a></div></div>
1716
1716
  </div><!-- fragment -->
1717
1717
  </div>
1718
1718
  </div>
@@ -1876,11 +1876,11 @@ Static Private Attributes</h2></td></tr>
1876
1876
  </table>
1877
1877
  </div><div class="memdoc">
1878
1878
 
1879
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00902">902</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1880
- <div class="fragment"><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160;{</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(oc);</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; {</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; }</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; {</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <a class="code" href="classSVF_1_1SVFConstant.html">SVFConstant</a>* svfoc = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstant.html">SVFConstant</a>(oc-&gt;getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(oc-&gt;getType()));</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">svfModule</a>-&gt;addConstant(svfoc);</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5badf03aeb1ebda02bc186bbb58a892a">addOtherConstantMap</a>(oc,svfoc);</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keywordflow">return</span> svfoc;</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; }</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFConstant_html"><div class="ttname"><a href="classSVF_1_1SVFConstant.html">SVF::SVFConstant</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00763">SVFValue.h:763</a></div></div>
1879
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00906">906</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1880
+ <div class="fragment"><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160;{</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(oc);</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; {</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; }</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; {</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <a class="code" href="classSVF_1_1SVFConstant.html">SVFConstant</a>* svfoc = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstant.html">SVFConstant</a>(oc-&gt;getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(oc-&gt;getType()));</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">svfModule</a>-&gt;addConstant(svfoc);</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5badf03aeb1ebda02bc186bbb58a892a">addOtherConstantMap</a>(oc,svfoc);</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">return</span> svfoc;</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; }</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFConstant_html"><div class="ttname"><a href="classSVF_1_1SVFConstant.html">SVF::SVFConstant</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00763">SVFValue.h:763</a></div></div>
1881
1881
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5badf03aeb1ebda02bc186bbb58a892a"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5badf03aeb1ebda02bc186bbb58a892a">SVF::LLVMModuleSet::addOtherConstantMap</a></div><div class="ttdeci">void addOtherConstantMap(const Constant *cons, SVFConstant *svfcons)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00174">LLVMModule.h:174</a></div></div>
1882
1882
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a4b94c96898dbbc71bc1cee04786cf3dc"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">SVF::LLVMModuleSet::LLVMConst2SVFConst</a></div><div class="ttdeci">LLVMConst2SVFConstMap LLVMConst2SVFConst</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00082">LLVMModule.h:82</a></div></div>
1883
- <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00975">LLVMModule.cpp:975</a></div></div>
1883
+ <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00979">LLVMModule.cpp:979</a></div></div>
1884
1884
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a3e14bbb3ae0acc74775ac3233a84d379"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">SVF::LLVMModuleSet::svfModule</a></div><div class="ttdeci">std::unique_ptr&lt; SVFModule &gt; svfModule</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00066">LLVMModule.h:66</a></div></div>
1885
1885
  </div><!-- fragment -->
1886
1886
  </div>
@@ -1958,15 +1958,16 @@ Static Private Attributes</h2></td></tr>
1958
1958
  </tr>
1959
1959
  </table>
1960
1960
  </div><div class="memdoc">
1961
+ <p>bool true will be translated to -1 with getSExtValue, so call getZExtValue() if bitwidth = 1 </p>
1961
1962
 
1962
1963
  <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00870">870</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1963
- <div class="fragment"><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160;{</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(cd);</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; {</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; assert(SVFUtil::isa&lt;SVFConstantData&gt;(it-&gt;second) &amp;&amp; <span class="stringliteral">&quot;not a SVFConstantData type!&quot;</span>);</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;SVFConstantData&gt;(it-&gt;second);</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; }</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; {</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <a class="code" href="classSVF_1_1SVFConstantData.html">SVFConstantData</a>* svfcd = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* cint = SVFUtil::dyn_cast&lt;ConstantInt&gt;(cd))</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>(cd-&gt;getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cint-&gt;getType()), cint-&gt;getZExtValue(),cint-&gt;getSExtValue());</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad49e4222ba46d9490b87a80df8b46800">ConstantFP</a>* cfp = SVFUtil::dyn_cast&lt;ConstantFP&gt;(cd))</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; {</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordtype">double</span> dval = 0;</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keywordflow">if</span>(cfp-&gt;isNormalFP() &amp;&amp; (&amp;cfp-&gt;getValueAPF().getSemantics()== &amp;llvm::APFloatBase::IEEEdouble()))</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; dval = cfp-&gt;getValueAPF().convertToDouble();</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantFP.html">SVFConstantFP</a>(cd-&gt;getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd-&gt;getType()), dval);</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; }</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;ConstantPointerNull&gt;(cd))</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantNullPtr.html">SVFConstantNullPtr</a>(cd-&gt;getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd-&gt;getType()));</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;UndefValue&gt;(cd))</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFBlackHoleValue.html">SVFBlackHoleValue</a>(cd-&gt;getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd-&gt;getType()));</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantData.html">SVFConstantData</a>(cd-&gt;getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd-&gt;getType()));</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">svfModule</a>-&gt;addConstant(svfcd);</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af4bd487b3b6efe55bf869b869f5e8a80">addConstantDataMap</a>(cd,svfcd);</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <span class="keywordflow">return</span> svfcd;</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; }</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFConstantInt_html"><div class="ttname"><a href="classSVF_1_1SVFConstantInt.html">SVF::SVFConstantInt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00883">SVFValue.h:883</a></div></div>
1964
+ <div class="fragment"><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160;{</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(cd);</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; {</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; assert(SVFUtil::isa&lt;SVFConstantData&gt;(it-&gt;second) &amp;&amp; <span class="stringliteral">&quot;not a SVFConstantData type!&quot;</span>);</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;SVFConstantData&gt;(it-&gt;second);</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; }</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; {</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <a class="code" href="classSVF_1_1SVFConstantData.html">SVFConstantData</a>* svfcd = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* cint = SVFUtil::dyn_cast&lt;ConstantInt&gt;(cd))</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; {</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>(cd-&gt;getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cint-&gt;getType()), cint-&gt;getZExtValue(),</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; cint-&gt;getBitWidth() == 1? cint-&gt;getZExtValue(): cint-&gt;getSExtValue());</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; }</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad49e4222ba46d9490b87a80df8b46800">ConstantFP</a>* cfp = SVFUtil::dyn_cast&lt;ConstantFP&gt;(cd))</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; {</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <span class="keywordtype">double</span> dval = 0;</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="keywordflow">if</span>(cfp-&gt;isNormalFP() &amp;&amp; (&amp;cfp-&gt;getValueAPF().getSemantics()== &amp;llvm::APFloatBase::IEEEdouble()))</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; dval = cfp-&gt;getValueAPF().convertToDouble();</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantFP.html">SVFConstantFP</a>(cd-&gt;getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd-&gt;getType()), dval);</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; }</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;ConstantPointerNull&gt;(cd))</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantNullPtr.html">SVFConstantNullPtr</a>(cd-&gt;getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd-&gt;getType()));</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;UndefValue&gt;(cd))</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFBlackHoleValue.html">SVFBlackHoleValue</a>(cd-&gt;getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd-&gt;getType()));</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantData.html">SVFConstantData</a>(cd-&gt;getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd-&gt;getType()));</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">svfModule</a>-&gt;addConstant(svfcd);</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af4bd487b3b6efe55bf869b869f5e8a80">addConstantDataMap</a>(cd,svfcd);</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; <span class="keywordflow">return</span> svfcd;</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; }</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFConstantInt_html"><div class="ttname"><a href="classSVF_1_1SVFConstantInt.html">SVF::SVFConstantInt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00883">SVFValue.h:883</a></div></div>
1964
1965
  <div class="ttc" id="namespaceSVF_html_ad49e4222ba46d9490b87a80df8b46800"><div class="ttname"><a href="namespaceSVF.html#ad49e4222ba46d9490b87a80df8b46800">SVF::ConstantFP</a></div><div class="ttdeci">llvm::ConstantFP ConstantFP</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00100">BasicTypes.h:100</a></div></div>
1965
1966
  <div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00099">BasicTypes.h:99</a></div></div>
1966
1967
  <div class="ttc" id="classSVF_1_1SVFConstantData_html"><div class="ttname"><a href="classSVF_1_1SVFConstantData.html">SVF::SVFConstantData</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00856">SVFValue.h:856</a></div></div>
1967
1968
  <div class="ttc" id="classSVF_1_1SVFConstantNullPtr_html"><div class="ttname"><a href="classSVF_1_1SVFConstantNullPtr.html">SVF::SVFConstantNullPtr</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00940">SVFValue.h:940</a></div></div>
1968
1969
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a4b94c96898dbbc71bc1cee04786cf3dc"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">SVF::LLVMModuleSet::LLVMConst2SVFConst</a></div><div class="ttdeci">LLVMConst2SVFConstMap LLVMConst2SVFConst</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00082">LLVMModule.h:82</a></div></div>
1969
- <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00975">LLVMModule.cpp:975</a></div></div>
1970
+ <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00979">LLVMModule.cpp:979</a></div></div>
1970
1971
  <div class="ttc" id="classSVF_1_1SVFConstantFP_html"><div class="ttname"><a href="classSVF_1_1SVFConstantFP.html">SVF::SVFConstantFP</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00915">SVFValue.h:915</a></div></div>
1971
1972
  <div class="ttc" id="classSVF_1_1SVFBlackHoleValue_html"><div class="ttname"><a href="classSVF_1_1SVFBlackHoleValue.html">SVF::SVFBlackHoleValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00959">SVFValue.h:959</a></div></div>
1972
1973
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_af4bd487b3b6efe55bf869b869f5e8a80"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#af4bd487b3b6efe55bf869b869f5e8a80">SVF::LLVMModuleSet::addConstantDataMap</a></div><div class="ttdeci">void addConstantDataMap(const ConstantData *cd, SVFConstantData *svfcd)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00169">LLVMModule.h:169</a></div></div>
@@ -2143,11 +2144,11 @@ Static Private Attributes</h2></td></tr>
2143
2144
  </table>
2144
2145
  </div><div class="memdoc">
2145
2146
 
2146
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00918">918</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2147
- <div class="fragment"><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160;{</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; LLVMValue2SVFOtherValueMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.find(ov);</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.end())</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; {</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; }</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; {</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>* svfov = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;MetadataAsValue&gt;(ov))</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; svfov = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFMetadataAsValue.html">SVFMetadataAsValue</a>(ov-&gt;getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ov-&gt;getType()));</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; svfov = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>(ov-&gt;getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ov-&gt;getType()));</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">svfModule</a>-&gt;addOtherValue(svfov);</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a023ea6f179433fa4d007c98ddc38e3c5">addOtherValueMap</a>(ov,svfov);</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="keywordflow">return</span> svfov;</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; }</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFOtherValue_html"><div class="ttname"><a href="classSVF_1_1SVFOtherValue.html">SVF::SVFOtherValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00978">SVFValue.h:978</a></div></div>
2147
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00922">922</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2148
+ <div class="fragment"><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160;{</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; LLVMValue2SVFOtherValueMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.find(ov);</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.end())</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; {</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; }</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; {</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>* svfov = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;MetadataAsValue&gt;(ov))</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; svfov = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFMetadataAsValue.html">SVFMetadataAsValue</a>(ov-&gt;getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ov-&gt;getType()));</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; svfov = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>(ov-&gt;getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ov-&gt;getType()));</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">svfModule</a>-&gt;addOtherValue(svfov);</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a023ea6f179433fa4d007c98ddc38e3c5">addOtherValueMap</a>(ov,svfov);</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="keywordflow">return</span> svfov;</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; }</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFOtherValue_html"><div class="ttname"><a href="classSVF_1_1SVFOtherValue.html">SVF::SVFOtherValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00978">SVFValue.h:978</a></div></div>
2148
2149
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a023ea6f179433fa4d007c98ddc38e3c5"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a023ea6f179433fa4d007c98ddc38e3c5">SVF::LLVMModuleSet::addOtherValueMap</a></div><div class="ttdeci">void addOtherValueMap(const Value *ov, SVFOtherValue *svfov)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00179">LLVMModule.h:179</a></div></div>
2149
2150
  <div class="ttc" id="classSVF_1_1SVFMetadataAsValue_html"><div class="ttname"><a href="classSVF_1_1SVFMetadataAsValue.html">SVF::SVFMetadataAsValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00995">SVFValue.h:995</a></div></div>
2150
- <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00975">LLVMModule.cpp:975</a></div></div>
2151
+ <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00979">LLVMModule.cpp:979</a></div></div>
2151
2152
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ac3e70bd338be3a54330be5dc10321eb3"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">SVF::LLVMModuleSet::LLVMValue2SVFOtherValue</a></div><div class="ttdeci">LLVMValue2SVFOtherValueMap LLVMValue2SVFOtherValue</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00083">LLVMModule.h:83</a></div></div>
2152
2153
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a3e14bbb3ae0acc74775ac3233a84d379"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">SVF::LLVMModuleSet::svfModule</a></div><div class="ttdeci">std::unique_ptr&lt; SVFModule &gt; svfModule</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00066">LLVMModule.h:66</a></div></div>
2153
2154
  </div><!-- fragment -->
@@ -2173,14 +2174,14 @@ Static Private Attributes</h2></td></tr>
2173
2174
  <p>Get or create <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> and typeinfo </p>
2174
2175
  <p>TODO: set the void* to every element for now (imprecise) For example, [getPointerTo(): char -&mdash;&gt; i8*] [getPointerTo(): int -&mdash;&gt; i8*] [getPointerTo(): struct -&mdash;&gt; i8*] </p>
2175
2176
 
2176
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00975">975</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2177
- <div class="fragment"><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160;{</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; assert(T);</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T);</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <span class="keywordflow">if</span> (it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end())</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; {</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svfType = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">addSVFTypeInfo</a>(T);</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(T);</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; svfType-&gt;setTypeInfo(stinfo);</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrTy = PointerType::getInt8PtrTy(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">getContext</a>())-&gt;getPointerTo();</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; svfType-&gt;setPointerTo(SVFUtil::cast&lt;SVFPointerType&gt;(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ptrTy)));</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <span class="keywordflow">return</span> svfType;</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; }</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160;}</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_aab7b08db9252ef7e21e54d019f44b073"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">SVF::LLVMModuleSet::addSVFTypeInfo</a></div><div class="ttdeci">SVFType * addSVFTypeInfo(const Type *t)</div><div class="ttdoc">Create SVFTypes. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01036">LLVMModule.cpp:1036</a></div></div>
2177
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00979">979</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2178
+ <div class="fragment"><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160;{</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; assert(T);</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T);</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <span class="keywordflow">if</span> (it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end())</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; {</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svfType = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">addSVFTypeInfo</a>(T);</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(T);</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; svfType-&gt;setTypeInfo(stinfo);</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrTy = PointerType::getInt8PtrTy(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">getContext</a>())-&gt;getPointerTo();</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; svfType-&gt;setPointerTo(SVFUtil::cast&lt;SVFPointerType&gt;(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ptrTy)));</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="keywordflow">return</span> svfType;</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; }</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160;}</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_aab7b08db9252ef7e21e54d019f44b073"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">SVF::LLVMModuleSet::addSVFTypeInfo</a></div><div class="ttdeci">SVFType * addSVFTypeInfo(const Type *t)</div><div class="ttdoc">Create SVFTypes. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01040">LLVMModule.cpp:1040</a></div></div>
2178
2179
  <div class="ttc" id="namespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
2179
2180
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ac1a9d20d62066ec4e181fad223669e32"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">SVF::LLVMModuleSet::getContext</a></div><div class="ttdeci">LLVMContext &amp; getContext() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00311">LLVMModule.h:311</a></div></div>
2180
- <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a1f6cc76c996a0577b20b8cedd83fff92"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">SVF::LLVMModuleSet::collectTypeInfo</a></div><div class="ttdeci">StInfo * collectTypeInfo(const Type *ty)</div><div class="ttdoc">Collect a type info. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00994">LLVMModule.cpp:994</a></div></div>
2181
+ <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a1f6cc76c996a0577b20b8cedd83fff92"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">SVF::LLVMModuleSet::collectTypeInfo</a></div><div class="ttdeci">StInfo * collectTypeInfo(const Type *ty)</div><div class="ttdoc">Collect a type info. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00998">LLVMModule.cpp:998</a></div></div>
2181
2182
  <div class="ttc" id="classSVF_1_1SVFType_html"><div class="ttname"><a href="classSVF_1_1SVFType.html">SVF::SVFType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00233">SVFType.h:233</a></div></div>
2182
2183
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a067661e0049314779a44c9600420820f"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">SVF::LLVMModuleSet::LLVMType2SVFType</a></div><div class="ttdeci">LLVMType2SVFTypeMap LLVMType2SVFType</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00085">LLVMModule.h:85</a></div></div>
2183
- <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00975">LLVMModule.cpp:975</a></div></div>
2184
+ <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00979">LLVMModule.cpp:979</a></div></div>
2184
2185
  <div class="ttc" id="classSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00131">SVFType.h:131</a></div></div>
2185
2186
  </div><!-- fragment -->
2186
2187
  </div>
@@ -2201,12 +2202,12 @@ Static Private Attributes</h2></td></tr>
2201
2202
  </table>
2202
2203
  </div><div class="memdoc">
2203
2204
 
2204
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00938">938</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2205
- <div class="fragment"><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160;{</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = SVFUtil::dyn_cast&lt;Function&gt;(value))</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(fun);</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = SVFUtil::dyn_cast&lt;BasicBlock&gt;(value))</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast&lt;Instruction&gt;(value))</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst);</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* arg = SVFUtil::dyn_cast&lt;Argument&gt;(value))</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad3f66b40ad360003845253f452d6a711">getSVFArgument</a>(arg);</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* cons = SVFUtil::dyn_cast&lt;Constant&gt;(value))</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; {</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">ConstantData</a>* cd = SVFUtil::dyn_cast&lt;ConstantData&gt;(cons))</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727">getSVFConstantData</a>(cd);</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">GlobalValue</a>* glob = SVFUtil::dyn_cast&lt;GlobalValue&gt;(cons))</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(glob);</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">getOtherSVFConstant</a>(cons);</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; }</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">getSVFOtherValue</a>(value);</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160;}</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a3cbba2eb702a3481478b2590dfffa352"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">SVF::LLVMModuleSet::getSVFGlobalValue</a></div><div class="ttdeci">SVFGlobalValue * getSVFGlobalValue(const GlobalValue *g) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00222">LLVMModule.h:222</a></div></div>
2205
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00942">942</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2206
+ <div class="fragment"><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160;{</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = SVFUtil::dyn_cast&lt;Function&gt;(value))</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(fun);</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = SVFUtil::dyn_cast&lt;BasicBlock&gt;(value))</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast&lt;Instruction&gt;(value))</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst);</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* arg = SVFUtil::dyn_cast&lt;Argument&gt;(value))</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad3f66b40ad360003845253f452d6a711">getSVFArgument</a>(arg);</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* cons = SVFUtil::dyn_cast&lt;Constant&gt;(value))</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; {</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">ConstantData</a>* cd = SVFUtil::dyn_cast&lt;ConstantData&gt;(cons))</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727">getSVFConstantData</a>(cd);</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">GlobalValue</a>* glob = SVFUtil::dyn_cast&lt;GlobalValue&gt;(cons))</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(glob);</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">getOtherSVFConstant</a>(cons);</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; }</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">getSVFOtherValue</a>(value);</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160;}</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a3cbba2eb702a3481478b2590dfffa352"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">SVF::LLVMModuleSet::getSVFGlobalValue</a></div><div class="ttdeci">SVFGlobalValue * getSVFGlobalValue(const GlobalValue *g) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00222">LLVMModule.h:222</a></div></div>
2206
2207
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a50fc24901350df9db890ba16a9b87e33"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00194">LLVMModule.h:194</a></div></div>
2207
2208
  <div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00060">BasicTypes.h:60</a></div></div>
2208
2209
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ad3f66b40ad360003845253f452d6a711"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ad3f66b40ad360003845253f452d6a711">SVF::LLVMModuleSet::getSVFArgument</a></div><div class="ttdeci">SVFArgument * getSVFArgument(const Argument *arg) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00215">LLVMModule.h:215</a></div></div>
2209
- <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a74256f36f0fdc242df9729906c34efbc"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">SVF::LLVMModuleSet::getOtherSVFConstant</a></div><div class="ttdeci">SVFConstant * getOtherSVFConstant(const Constant *oc)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00902">LLVMModule.cpp:902</a></div></div>
2210
+ <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a74256f36f0fdc242df9729906c34efbc"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">SVF::LLVMModuleSet::getOtherSVFConstant</a></div><div class="ttdeci">SVFConstant * getOtherSVFConstant(const Constant *oc)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00906">LLVMModule.cpp:906</a></div></div>
2210
2211
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ab0c0f321b6bfbfab2e4ff06d81920ab9"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">SVF::LLVMModuleSet::getSVFBasicBlock</a></div><div class="ttdeci">SVFBasicBlock * getSVFBasicBlock(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00201">LLVMModule.h:201</a></div></div>
2211
2212
  <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00059">BasicTypes.h:59</a></div></div>
2212
2213
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00061">BasicTypes.h:61</a></div></div>
@@ -2214,7 +2215,7 @@ Static Private Attributes</h2></td></tr>
2214
2215
  <div class="ttc" id="namespaceSVF_html_a58cdfbc4160cae08745b67844ac29801"><div class="ttname"><a href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF::Argument</a></div><div class="ttdeci">llvm::Argument Argument</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00118">BasicTypes.h:118</a></div></div>
2215
2216
  <div class="ttc" id="namespaceSVF_html_a67f3f86344f028cacfbeb08caaf7bb0f"><div class="ttname"><a href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">SVF::GlobalValue</a></div><div class="ttdeci">llvm::GlobalValue GlobalValue</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00062">BasicTypes.h:62</a></div></div>
2216
2217
  <div class="ttc" id="namespaceSVF_html_a7e230c0cba2e3a7c2e5a5f2ee7d88af9"><div class="ttname"><a href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">SVF::Constant</a></div><div class="ttdeci">llvm::Constant Constant</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00098">BasicTypes.h:98</a></div></div>
2217
- <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a0ef17c1d5e6a95c597d2334ea577a965"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">SVF::LLVMModuleSet::getSVFOtherValue</a></div><div class="ttdeci">SVFOtherValue * getSVFOtherValue(const Value *ov)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00918">LLVMModule.cpp:918</a></div></div>
2218
+ <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a0ef17c1d5e6a95c597d2334ea577a965"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">SVF::LLVMModuleSet::getSVFOtherValue</a></div><div class="ttdeci">SVFOtherValue * getSVFOtherValue(const Value *ov)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00922">LLVMModule.cpp:922</a></div></div>
2218
2219
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a25821b0feeb3b08e00ec9d444520b727"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727">SVF::LLVMModuleSet::getSVFConstantData</a></div><div class="ttdeci">SVFConstantData * getSVFConstantData(const ConstantData *cd)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00870">LLVMModule.cpp:870</a></div></div>
2219
2220
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ae74f307b6f96950ceedb2c375ef1c3a3"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">SVF::LLVMModuleSet::getSVFInstruction</a></div><div class="ttdeci">SVFInstruction * getSVFInstruction(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00208">LLVMModule.h:208</a></div></div>
2220
2221
  </div><!-- fragment -->
@@ -2414,7 +2415,7 @@ Static Private Attributes</h2></td></tr>
2414
2415
  <div class="ttc" id="classSVF_1_1SVFBasicBlock_html"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html">SVF::SVFBasicBlock</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00471">SVFValue.h:471</a></div></div>
2415
2416
  <div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_ae9ddfd95ec4a36537f582acad0262e70"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae9ddfd95ec4a36537f582acad0262e70">SVF::LLVMUtil::getPrevInsts</a></div><div class="ttdeci">void getPrevInsts(const Instruction *curInst, std::vector&lt; const SVFInstruction *&gt; &amp;instList)</div><div class="ttdoc">Get the previous instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00300">LLVMUtil.cpp:300</a></div></div>
2416
2417
  <div class="ttc" id="namespaceSVF_html_a1f4624771922dc8c2447ad7433588c73"><div class="ttname"><a href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">SVF::CallBase</a></div><div class="ttdeci">llvm::CallBase CallBase</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00119">BasicTypes.h:119</a></div></div>
2417
- <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_afdd77bc1fca91f70b2ec362f1dacd392"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">SVF::LLVMModuleSet::getSVFValue</a></div><div class="ttdeci">SVFValue * getSVFValue(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00938">LLVMModule.cpp:938</a></div></div>
2418
+ <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_afdd77bc1fca91f70b2ec362f1dacd392"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">SVF::LLVMModuleSet::getSVFValue</a></div><div class="ttdeci">SVFValue * getSVFValue(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00942">LLVMModule.cpp:942</a></div></div>
2418
2419
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ae74f307b6f96950ceedb2c375ef1c3a3"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">SVF::LLVMModuleSet::getSVFInstruction</a></div><div class="ttdeci">SVFInstruction * getSVFInstruction(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00208">LLVMModule.h:208</a></div></div>
2419
2420
  </div><!-- fragment -->
2420
2421
  </div>