[llvm-dev] Fault while using AAResultsWrapperPass in LLVM 5.0.1

zhangjun02@ict.ac.cn via llvm-dev llvm-dev at lists.llvm.org
Tue Apr 3 20:32:55 PDT 2018


I am trying to use AliasAnalysis. The code for pass dependence is as following:

class Timer : public ModulePass{
  AliasAnalysis *AA;
  void getAnalysisUsage(AnalysisUsage &AU) const override {
       AU.addRequired<AAResultsWrapperPass>();
   }
.........
}

bool Timer::runOnFunction(Function &F) 
{
  LLVMContext &C = F.getContext();
  AA = &getAnalysis<AAResultsWrapperPass>(F).getAAResults();
.....
}

When the Timer pass is registered by the following code:
char CPI::ID = 0;
static RegisterPass<CPI> X("cpi", "code pointer integrity Pass");
The test code can be compiled successfully by the following command:
comp_1:
clang -O0 -emit-llvm test.c -c -o test_clang.bc
clang -O0 -emit-llvm fun_lib.c -c -o fun_lib.bc
opt -load ${LLVM_LIB}/LLVMTimer.so -Timer < test_clang.bc > test_clang1.bc
opt -load ${LLVM_LIB}/LLVMTimer.so -Timer < fun_lib.bc > test_clang1.bc
llc test_clang.bc -o test_clang.s
llc fun_lib.bc -o fun_lib.s
gcc test_clang.s fun_lib.s -o test.native

When the Pass is registered by the following code:
static void registerCPI(const PassManagerBuilder &, legacy::PassManagerBase &PM){
  PM.add(new CPI()); 
}

static RegisterStandardPasses 
       RegisterMyPass(PassManagerBuilder::EP_ModuleOptimizerEarly, registerCPI);

static RegisterStandardPasses
RegisterMyPass0(PassManagerBuilder::EP_EnabledOnOptLevel0, registerCPI);
And compiled with the following command:
comp_3:
clang -Xclang -load -Xclang ${LLVM_LIB}/LLVMCPI.so -O0 -c test.c 
clang -Xclang -load -Xclang ${LLVM_LIB}/LLVMCPI.so -O0 -c fun_lib.c 
cc *.o ${CPI_LIB}
I get the following errors:

clang -Xclang -load -Xclang /home/zhangjun/tools/llvm/llvm-build/lib/LLVMCPI.so -O0 -c test.c 
Pass 'Unnamed pass: implement Pass::getPassName()' is not initialized.
Verify if there is a pass dependency cycle.
Required Passes:
clang-5.0: /home/zhangjun/tools/llvm/llvm/lib/IR/LegacyPassManager.cpp:653: void llvm::PMTopLevelManager::schedulePass(llvm::Pass*): Assertion `PI && "Expected required passes to be initialized"' failed.
#0 0x0000000002dae43f llvm::sys::PrintStackTrace(llvm::raw_ostream&) /home/zhangjun/tools/llvm/llvm/lib/Support/Unix/Signals.inc:398:0
#1 0x0000000002dae4d0 PrintStackTraceSignalHandler(void*) /home/zhangjun/tools/llvm/llvm/lib/Support/Unix/Signals.inc:462:0
#2 0x0000000002dac916 llvm::sys::RunSignalHandlers() /home/zhangjun/tools/llvm/llvm/lib/Support/Signals.cpp:49:0
#3 0x0000000002daddd7 SignalHandler(int) /home/zhangjun/tools/llvm/llvm/lib/Support/Unix/Signals.inc:252:0

How to fix this problem?

Regards,
Jun


zhangjun02 at ict.ac.cn
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180404/9b044b08/attachment.html>


More information about the llvm-dev mailing list