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>