<html><body><div style="font-family: times new roman, new york, times, serif; font-size: 12pt; color: #000000"><div><p style="margin: 0px; font-size: 12px; font-family: Helvetica;" data-mce-style="margin: 0px; font-size: 12px; font-family: Helvetica;">Hello,</p><p style="margin: 0px; font-size: 12px; font-family: Helvetica; min-height: 14px;" data-mce-style="margin: 0px; font-size: 12px; font-family: Helvetica; min-height: 14px;"><br></p><p style="margin: 0px; font-size: 12px; font-family: Helvetica;" data-mce-style="margin: 0px; font-size: 12px; font-family: Helvetica;"><span class="Apple-tab-span" style="white-space: pre;" data-mce-style="white-space: pre;"> </span>I am trying to add some thing into LLVM, while I encountered some problems.</p><p style="margin: 0px; font-size: 12px; font-family: Helvetica; min-height: 14px;" data-mce-style="margin: 0px; font-size: 12px; font-family: Helvetica; min-height: 14px;"><br></p><p style="margin: 0px; font-size: 12px; font-family: Helvetica;" data-mce-style="margin: 0px; font-size: 12px; font-family: Helvetica;"><span class="Apple-tab-span" style="white-space: pre;" data-mce-style="white-space: pre;"> </span>So my situation is that I have some information W, some transform passes may change it, after these passes, I need the new W. What I did is to create an analysis pass similar to scalar-evolution or loopinfo, I can get the information by using getAnalysis<W>(); and preserve this information W by using AU.addPreserved<W>();. Then the problem came, for the module pass, the information can’t be preserved. (I found this: <span style="font-size: 13px; font-family: Courier;" data-mce-style="font-size: 13px; font-family: Courier;">To the best of my knowledge, the LLVM pass manager never preserves a FunctionPass analysis that is requested by a ModulePass; every time you call getAnalysis for a function, the FunctionPass is re-run. http://lists.cs.uiuc.edu/pipermail/llvmdev/2012-March/048139.html</span>) So this means that I can’t update W when some module passes changed it?</p><p style="margin: 0px; font-size: 12px; font-family: Helvetica; min-height: 14px;" data-mce-style="margin: 0px; font-size: 12px; font-family: Helvetica; min-height: 14px;"><br></p><p style="margin: 0px; font-size: 12px; font-family: Helvetica;" data-mce-style="margin: 0px; font-size: 12px; font-family: Helvetica;">My questions are:</p><p style="margin: 0px; font-size: 12px; font-family: Helvetica;" data-mce-style="margin: 0px; font-size: 12px; font-family: Helvetica;">1, Module pass really can’t preserve the W?</p><p style="margin: 0px; font-size: 12px; font-family: Helvetica;" data-mce-style="margin: 0px; font-size: 12px; font-family: Helvetica;">2, If it’s real, why and how can I fix this? If it’s not, what should I do to keep the information W?</p><p style="margin: 0px; font-size: 12px; font-family: Helvetica;" data-mce-style="margin: 0px; font-size: 12px; font-family: Helvetica;">3, The way of using an analysis pass to keep the information of W is suitable? Any other better solution?</p><p style="margin: 0px; font-size: 12px; font-family: Helvetica; min-height: 14px;" data-mce-style="margin: 0px; font-size: 12px; font-family: Helvetica; min-height: 14px;"><br></p><p style="margin: 0px; font-size: 12px; font-family: Helvetica;" data-mce-style="margin: 0px; font-size: 12px; font-family: Helvetica;">Thank you,</p><p style="margin: 0px; font-size: 12px; font-family: Helvetica; min-height: 14px;" data-mce-style="margin: 0px; font-size: 12px; font-family: Helvetica; min-height: 14px;"><br></p><p style="margin: 0px; font-size: 12px; font-family: Helvetica;" data-mce-style="margin: 0px; font-size: 12px; font-family: Helvetica;">Best regards,</p><p style="margin: 0px; font-size: 12px; font-family: Helvetica; min-height: 14px;" data-mce-style="margin: 0px; font-size: 12px; font-family: Helvetica; min-height: 14px;"><br></p><p style="margin: 0px; font-size: 12px; font-family: Helvetica;" data-mce-style="margin: 0px; font-size: 12px; font-family: Helvetica;">Hanbing</p></div></div></body></html>