2017-05-21 31 views
0

我試圖使用AliasSetTracker來收集別名集。但是,新版本讓我感到困惑。要初始化一個AliasSetTracker,我需要一個AliasAnalysis實例。但老一:llvm 4.0.0初始化AliasSetTracker類

AliasAnalysis &AA = getAnalysis<AliasAnalysis>(); 
AliasSetTracker tr(AA); 

不工作和錯誤:

In file included from /Users/.../LLVM/llvm/include/llvm/Pass.h:388: 
/Users/.../llvm/include/llvm/PassAnalysisSupport.h:223:53: error: no member 
named 'ID' in 'llvm::AAResults' 
return getAnalysisID<AnalysisType>(&AnalysisType::ID); 

/Users.../program/Analysis.cpp:215:25: note: in 
instantiation of function template specialization 
'llvm::Pass::getAnalysis<llvm::AAResults>' requested here 
AliasAnalysis &AA = getAnalysis<AliasAnalysis>(); 

回答

0
在LLVM的這個新版本

你要使用的功能getAnalysisUsage並修改您所使用的功能getAnalysis方式:
1以下函數添加在您的通行證結構:
virtual void getAnalysisUsage(AnalysisUsage &AU) const override { AU.addRequired<AAResultsWrapperPass>(); }
2-修改您的通話到getAnalysis功能:
AliasAnalysis &AA = getAnalysis<AAResultsWrapperPass>().getAAResults();

這將現在的工作:)

+0

謝謝,這一個工程。 – Crystal

+0

歡迎:) – Sahar