[LLVMdev] getAnalysisIfAvailable<>(...)

Garrison Venn gvenn.cfe.dev at gmail.com
Wed Dec 9 05:04:46 PST 2009


Ok, I'll target this, if is not done by then, once I get a better understanding of the LLVM infrastructure. I currently seem to be spending most of my limited time reading LLVM source. Thanks for the clarification.

Garrison

On Dec 8, 2009, at 16:28, Devang Patel wrote:

> Hi!
> 
> If a pass is required then it makes sense to
> getAnalysis<DwarfWriter>().  getAnalysisIfAvailable<>() is used for
> cases where a pass want to take advantage of (or fix up) info only
> *if* it is available.
> 
> If you prepare a patch to fix getAnalysisifAvailable<>() uses (e.g.
> DwarfWriter requests you mention below) then I'll apply it.
> 
> -
> Devang
> 
> On Tue, Dec 8, 2009 at 11:11 AM, Garrison Venn <gvenn.cfe.dev at gmail.com> wrote:
>> Is it consistent to have a Pass instance's run method's implementation use getAnalysisIfAvailable<AnalysisType>() (vs just using getAnalysis< AnalysisType >) when that same instance's getAnalysisUsage(AnalysisUsage &au) implementation invokes au.addRequired<AnalysisType>()?
>> 
>> For example in the implementation of SelectionDAGISel::runOnMachineFunction(...) (called from MachineFunctionPass::runOnFunction(...)):
>> 
>> DwarfWriter *DW = getAnalysisIfAvailable<DwarfWriter>();
>> 
>> is used vs:
>> 
>> DwarfWriter &DW = getAnalysis<DwarfWriter>();
>> 
>> even though SelectionDAGISel::getAnalysisUsage(AnalysisUsage &AU) sets:
>> 
>> AU.addRequired<DwarfWriter>();
>> 
>> Since this occurs in 2.6 and trunk, and this pattern is repeated with other analysis passes, I'm wondering if I'm not understanding something.
>> 
>> Thanks in advance
>> 
>> Garrison
>> 
>> 
>> 
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>> 
> 
> 
> 
> -- 
> -
> Devang





More information about the llvm-dev mailing list