[llvm-dev] Can not require two user defined analysis pass at the same time (Unable to schedule pass)

Dong Chen via llvm-dev llvm-dev at lists.llvm.org
Sat May 20 20:56:05 PDT 2017


Dear all:

     I am currently writing an analysis pass. I would like to split myPass
into three analysis passes A, B, C which makes the original code more
structured. Pass A depends on the results of Pass B and C.

     But the problem is that when A requires B and C at the same time, the
(unable to schedule pass) error happens. But when A only requires one pass
B or C, the code works correctly. But both B and C are analysis pass, why
can't they be scheduled when they are required at the same time? The
requiring code looks like this.

void getAnalysisUsage(AnalysisUsage &AU) const override {

            AU.setPreservesAll();

            AU.addRequired<idxAnalysis::IndexAnalysis>();

            AU.addRequired<argAnalysis::ArgumentAnalysis>();

}

Thanks!

Dong

Error massage:

/Users/dongchen/tools/llvm_xcode/Debug/bin/opt -load
/Users/dongchen/tools/llvm_xcode/Debug/lib/LLVMSymFP.dylib -symFP
<./src_bc/stencil.bc> ./src_bc/stencil.bc.opt

Unable to schedule 'B' required by 'A'

Unable to schedule pass

UNREACHABLE executed at
/Users/dongchen/tools/llvm-4.0.0.src/lib/IR/LegacyPassManager.cpp:1243!

0  opt                      0x000000010a336bbc
llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 60

1  opt                      0x000000010a337139
PrintStackTraceSignalHandler(void*) + 25

2  opt                      0x000000010a333269
llvm::sys::RunSignalHandlers() + 425

3  opt                      0x000000010a337802 SignalHandler(int) + 354

4  libsystem_platform.dylib 0x00007fffb90bab3a _sigtramp + 26

5  libsystem_platform.dylib 0x00007fff58221020 _sigtramp + 2669044992

6  libsystem_c.dylib        0x00007fffb8f3f420 abort + 129

7  opt                      0x000000010a2e9f70 LLVMInstallFatalErrorHandler
+ 0

8  opt                      0x00000001099e8904
llvm::PMDataManager::addLowerLevelRequiredPass(llvm::Pass*, llvm::Pass*) +
244

9  opt                      0x00000001099e73d5
llvm::PMDataManager::add(llvm::Pass*, bool) + 1237

10 opt                      0x00000001099ec493
llvm::FunctionPass::assignPassManager(llvm::PMStack&,
llvm::PassManagerType) + 627

11 opt                      0x00000001099e3a81
llvm::PMTopLevelManager::schedulePass(llvm::Pass*) + 2049

12 opt                      0x00000001099ebacf
llvm::legacy::PassManagerImpl::add(llvm::Pass*) + 47

13 opt                      0x00000001099eba91
llvm::legacy::PassManager::add(llvm::Pass*) + 33

14 opt                      0x0000000107a0ee6f
addPass(llvm::legacy::PassManagerBase&, llvm::Pass*) + 47

15 opt                      0x0000000107a09f9e main + 20094

16 libdyld.dylib            0x00007fffb8eab235 start + 1

17 libdyld.dylib            0x0000000000000004 start + 1192578512

Stack dump:

0. Program arguments: /Users/dongchen/tools/llvm_xcode/Debug/bin/opt -load
/Users/dongchen/tools/llvm_xcode/Debug/lib/LLVMSymFP.dylib -symFP

/bin/sh: line 1:  1198 Abort trap: 6
/Users/dongchen/tools/llvm_xcode/Debug/bin/opt -load
/Users/dongchen/tools/llvm_xcode/Debug/lib/LLVMSymFP.dylib -symFP <
./src_bc/stencil.bc > ./src_bc/stencil.bc.opt

make: *** [check] Error 134
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170520/6ed8a2e2/attachment.html>


More information about the llvm-dev mailing list