[llvm-commits] [llvm] r145559 - in /llvm/trunk: include/llvm/Analysis/ lib/Analysis/ lib/Transforms/Scalar/ lib/Transforms/Utils/

Chad Rosier mcrosier at apple.com
Thu Dec 1 15:53:01 PST 2011

On Dec 1, 2011, at 3:29 PM, Chris Lattner wrote:

> On Dec 1, 2011, at 12:17 PM, Chad Rosier wrote:
>> Hi Duncan,
>> The issue I'm trying to resolve is in ConstantFoldCall.  Specifically, we shouldn't be folding library calls when -fno-builtin is specified; this requires TargetLibraryInfo.  Unfortunately, the folding routines are designed to be independent of a Pass, but getAnalysis and getAnalysisIfAvailable are not.  Therefore, I used the same convention as TargetData (i.e., pass it all over creation).  If I'm missing something here someone please chime in as I'm not particularly fond of the solution either.
>> Also, please reply all in the future as I may miss something only addressed to the list. :)
> An idiom that some code uses (e.g. SplitCriticalEdge) is to pass in a Pass* of the pass that is calling the helper.  The helper code can then use P->getAnalysisIfAvailable<>.

Due to the recursive nature of the ConstantFold* routines I believe you'd just be trading TargetLibraryInfo* for Pass* except now you'd have to call P->getAnalysis<TargetLibraryInfo>(); then TLI->*, rather then TLI->* directly.  You could make the case that you could pass Pass* only rather then both TargetData* and TargetLibraryInfo*, but you still have the issue of making a call to getAnalysis* before you can actually use TD/TLI.


> -Chris

More information about the llvm-commits mailing list