[LLVMdev] Something about the andersens pass

Chris Lattner sabre at nondot.org
Thu Jan 24 20:51:01 PST 2008

> I then run another pass:
>   PassManager PM;
>   PM.add(new TargetData(*EE->getTargetData()));
>   PM.add(createVerifierPass());
>   //PM.add(createAndersensPass());  // Seems to break dynamic casts
> in combo with load value numbering
>   PM.add(createLoadValueNumberingPass());
>   PM.add(createGCSEPass());
>   PM.add(createAggressiveDCEPass());
>   PM.add(createDeadInstEliminationPass());
>   PM.run(*qModule);
> Next, I call my monster function and it works as expected.
> But if I uncomment the call to createAndersendsPass() my code fails
> (because something goes wrong with the dynamic cast).

I don't know if andersen's is considered to be production quality.   
DannyB, can you comment?

> Is what I'm doing supposed to work?  I have I missed something with
> the pass manager?

Nope, this should work.  You might consider using the GVN pass instead  
of loadvn+gcse though, it is much faster and should be at least as  


More information about the llvm-dev mailing list