2017-05-21 6 views
0

AliasSetTrackerを使用してエイリアスセットを収集しようとしています。しかし、新しいバージョンは私を混乱させます。 AliasSetTrackerを初期化するには、AliasAnalysisのインスタンスが必要です。しかし、1歳:llvm 4.0.0 AliasSetTrackerクラスを初期化する

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

は動作しないとエラー:LLVMのこの新しいバージョンで

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

あなたは、関数getAnalysisUsageを使用し、機能のgetAnalysisを使用する方法を変更する必要があります。
1-あなたのパス構造体に次の関数を追加します。
AliasAnalysis &AA = getAnalysis<AAResultsWrapperPass>().getAAResults();
virtual void getAnalysisUsage(AnalysisUsage &AU) const override { AU.addRequired<AAResultsWrapperPass>(); }
2- getAnalysis関数にお電話を変更します

これで動作します:)

+0

ありがとう、これは動作します。 – Crystal

+0

あなたは歓迎です:) – Sahar

関連する問題