[LLVMdev] How to link the right libraries?

Chris Lattner sabre at nondot.org
Wed May 3 09:27:11 PDT 2006


On Tue, 2 May 2006, Fernando Magno Quintao Pereira wrote:
>> MachineFunctionPass's cannot be used as part of opt, they can only be used
>> as part of LLC.  Further, you have to explicitly modify the target you are
>> interested in to add it to the pass manager for that target.
>>
>> What are you trying to do that requires a machine function pass?
>
> I see. Thank you, Chris. Actually, what I was trying to do was to
> compile a little example with each pass, as the hello world pass
> in http://llvm.org/docs/WritingAnLLVMPass.html. My intention is to
> get more acquainted with LLVM, and C++

Ok.

> So, if I want to add machine dependent passes, for example, for the
> X86, I have to add them in the X86TargetMachine.cpp file, is it right?

Yes.

> I am a little confused about where to register passes, though. For
> instance, the passes "phi-node-elimination", and
> "TwoAddressInstructionPass" are registered in
> TwoAddressInstructionPass.cpp
> and PHIElimination.cpp, but what does determine that the PHI elimination
> pass is executed first? Also, why the register allocation pass is added
> directly to the pass manager in X86TargetMachine, and the same does
> not happen to the PHI elimination pass?

PHI elimination is a detail of particular register allocator algorithms: 
in particular, some arbitrary register allocator could choose to eliminate 
PHI's in a way that is different than the other regallocs.  As such, phi 
elimination is handled with the pass dependency mechanism, the specific 
register allocators that want it declare that they need phi's to be 
eliminated.

-Chris

-- 
http://nondot.org/sabre/
http://llvm.org/




More information about the llvm-dev mailing list