2017-05-21 8 views
0

AliasSetTracker를 사용하여 별칭 집합을 수집하려고합니다. 그러나 새 버전은 나를 혼란스럽게 만듭니다. AliasSetTracker를 초기화하려면 AliasAnalysis 인스턴스가 필요합니다. 그러나 하나의 오래 :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