<div dir="ltr">Hi Alexandru,<div><br></div><div style>> <span style="font-family:arial,sans-serif;font-size:13px"> </span><span style="font-family:arial,sans-serif;font-size:13px">I don't want to use INITIALIZE_PASS since I have to recompile the llvm file that is keeping the pass registration...</span></div>
<div style><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div style><span style="font-family:arial,sans-serif;font-size:13px">I would have encouraged you to use INITIALIZE_PASS to fix this. </span><span style="font-family:arial,sans-serif;font-size:13px">If you really don't want to though, I think RegisterPass is still intended to work for MachineFunctionPasses, though this may no longer be well tested. Can you attach a skeleton pass that exhibits the problem you're seeing?</span></div>
<div style><br></div><div style>Cheers,</div><div style>Lang.</div><div style><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Mar 15, 2013 at 5:41 AM, Alexandru Ionut Diaconescu <span dir="ltr"><<a href="mailto:alexandruionutdiaconescu@gmail.com" target="_blank">alexandruionutdiaconescu@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I found that : "Code generator passes are registered and initialized specially by
<tt><span>TargetMachine::addPassesToEmitFile</span></tt> and similar routines, so they cannot
generally be run from the <strong>opt</strong> or <strong>bugpoint</strong> commands."...So how I can run a MachineFunctionPass? In the end, I just want to apply a DFS on a CFG of a function. And I need oriented edges and wanted to use MachineBasicBlock::const_succ_iterator. It is there a way to get the CFG with oriented edges by using a FunctionPass?<br>

<br>Thank you !<div class="HOEnZb"><div class="h5"><br><br><div class="gmail_quote">On Fri, Mar 15, 2013 at 1:30 PM, Alexandru Ionut Diaconescu <span dir="ltr"><<a href="mailto:alexandruionutdiaconescu@gmail.com" target="_blank">alexandruionutdiaconescu@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello everyone,<br><br>I have written several complex passes till now, but I cannot write a MachineFunctionPass pass. It just gives me segfault. Hence I reduced the pass to the following form :<br>

<br><br>using namespace llvm;<br>

<br>namespace {<br>  class CFGexplorator : public MachineFunctionPass {<br>  public:<br>    static char ID; // Pass identification, replacement for typeid<br>    CFGexplorator() : MachineFunctionPass(ID) {<br>      //initializeMemDepPrinterPass(*PassRegistry::getPassRegistry());<br>



    }<br><br>  private:<br>    virtual bool runOnMachineFunction(MachineFunction &MF);<br><br>    virtual void getAnalysisUsage(AnalysisUsage &AU) const {<br>      MachineFunctionPass::getAnalysisUsage(AU);<br>    }<br>



  };<br>} // end anonymous namespace<br><br>char CFGexplorator::ID = 0;<br>static RegisterPass<CFGexplorator> Y("mycfg", "mycfg", false, false);<br><br>bool CFGexplorator::runOnMachineFunction(MachineFunction &MF) { <br>



return false;<br>}<br><br><br><br>I get the error : <br>Pass 'mycfg' is not initialized.<br>Verify if there is a pass dependency cycle.<br>Required Passes:<br>opt: PassManager.cpp:638: void llvm::PMTopLevelManager::schedulePass(llvm::Pass*): Assertion `PI && "Expected required passes to be initialized"' failed.<br>



<br><br>So I have to initialize the pass. But in my all other passes I did not any initialization and I don't want to use INITIALIZE_PASS since I have to recompile the llvm file that is keeping the pass registration... Is there a way to keep using static RegisterPass for a MachineFunctionPass ? I mention that if I change to FunctionPass, I have no problems and that is weird..<br>


<br>Thank you for any advice !<br>
<br><br><br>
</blockquote></div><br><br clear="all"><br></div></div><span class="HOEnZb"><font color="#888888">-- <br><font style="color:rgb(153,153,153)">Best regards,</font><br style="color:rgb(153,153,153)"><font style="color:rgb(153,153,153)">Alexandru Ionut Diaconescu</font><br>


</font></span><br>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
<br></blockquote></div><br></div>