<div dir="ltr"><div><br></div><div>Hi, all</div><div><br></div><div>I know LLVM has including several implementation of alias anlaysis. Now I</div><div>want to get the conservative alias set information, or maybe alias set information.</div><div>I print the alias result through command " opt -print-alias-sets -biasicaa .... ",</div><div>and I found the basic alias analysis does't consider the global values, so </div><div>if I want to get the maybe alias set information of all variables including global variabels,</div><div>which alias analysis pass is better for me? </div><div><br></div><div>In addition, should I get the alias set information through AliasSetTracker?</div><div>Now, I am trying to use AliasSetTracker with Basic Alias Analysis as follow: </div><div><br></div><div>PassManager pm;</div><div>pm.add(...); // add other passes</div><div>aliasInfo = createBasicAliasAnalysisPass();</div><div>pm.add(aliasInfo);</div><div>pm.run(*module);</div><div>aliasTracker = new AliasSetTracker(aliasInfo->getAnalysis<AliasAnalysis>());</div><div><br></div><div>// For testing this implementation, I using the next code to print the alias set by </div><div>// simulating the code in AliasSetPrinter.</div><div><br></div><div>for (Module::iterator MIt = module->begin(); MIt != module->end(); ++MIt) {</div><div>    for (Function::iterator FIt = MIt->begin(); FIt != MIt->end(); ++FIt) {</div><div>        for (BasicBlock::iterator BIt = FIt->begin(); BIt != FIt->end(); ++BIt) {</div><div>            aliasTracker->add(&*BIt);  //***</div><div>        }</div><div>    }</div><div>    aliasTracker->print()</div><div>}</div><div><br></div><div>However, the program crushed at line "***" with the next backtrace information.</div><div>So how should I correctly get the alias set information?</div><div><br></div><div>0  klee            0x0000000000edc9af</div><div>1  klee            0x0000000000edceb9</div><div>2  libpthread.so.0 0x00007f2da192bcb0</div><div>3  klee            0x0000000000ce327f llvm::AliasSet::aliasesPointer(llvm::Value const*, unsigned long, llvm::MDNode const*, llvm::AliasAnalysis&) const + 95</div><div>4  klee            0x0000000000ce73d7 llvm::AliasSetTracker::findAliasSetForPointer(llvm::Value const*, unsigned long, llvm::MDNode const*) + 167</div><div>5  klee            0x0000000000ce865a llvm::AliasSetTracker::getAliasSetForPointer(llvm::Value*, unsigned long, llvm::MDNode const*, bool*) + 3562</div><div>6  klee            0x0000000000ce8b58 llvm::AliasSetTracker::add(llvm::LoadInst*) + 200</div><div>7  klee            0x00000000006480fd klee::Executor::printAliasSet() + 125</div><div>8  klee            0x000000000067744e klee::Executor::run(klee::ExecutionState&) + 878</div><div>9  klee            0x00000000006793ce klee::Executor::runFunctionAsMain(llvm::Function*, int, char**, char**, std::vector<int, std::allocator<int> >) + 2446</div><div>10 klee            0x0000000000635356 main + 10774</div><div>11 libc.so.6       0x00007f2da0b6776d __libc_start_main + 237</div><div>12 klee            0x00000000006408f1</div><div>Command terminated by signal 11</div><div><br></div><div><div class="gmail_signature">Thank you all in advance!</div><div class="gmail_signature"><br>--------------------------------------------<br>Qiuping Yi<br>Institute Of Software<br>Chinese Academy of Sciences</div></div>
</div>