[LLVMdev] Choosing an alias analyzer

Pranav Bhandarkar pranavb at codeaurora.org
Fri Oct 19 11:44:50 PDT 2012


Hi,

In lib/Transforms/IPO/PassManagerBuilder.cpp: addInitialAliasAnalysisPasses,
I see this code
------
  // Add TypeBasedAliasAnalysis before BasicAliasAnalysis so that
  // BasicAliasAnalysis wins if they disagree. This is intended to help
  // support "obvious" type-punning idioms.
  PM.add(createTypeBasedAliasAnalysisPass());
  PM.add(createBasicAliasAnalysisPass());
}
------

My goal is to use ScalarEvolutionAliasAnalysis in MemoryDependenceAnalysis.
When I do,  getPassName in MemoryDependenceAnalysis (by stepping into
getAnalysisUsage), I get
$39 = 0x399f778 "Basic Alias Analysis (stateless AA impl)" 

To switch to ScalarEvolutionAnalysis, I changed
lib/Transforms/IPO/PassManagerBuilder.cpp: addInitialAliasAnalysisPasses to
call createScalarEvolutionAliasAnalysisPass instead of
createBasicAliasAnalysisPass.
But, when I do getPassName() in MemoryDependenceAnalysis , I get TBAA and
not Scalar Evolution Alias Analysis.

What do I have to do to be able to use SCEV Alias Analysis by using the
clang driver (which seems to populate its passes via PassManagerBuilder.cpp)
?

Thanks,
Pranav
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by
The Linux Foundation




More information about the llvm-dev mailing list