Contributing Developer FAQ
Developer FAQ
Pass does not load
One error that you may encounter is that an analysis pass does not load with output similar to this:
opt -load-pass-plugin ../../Debug/libQSharpPasses.dylib -enable-debugify --passes="operation-counter" -disable-output classical-program.bc
Failed to load passes from '../../Debug/libQSharpPasses.dylib'. Request ignored.
opt: unknown pass name 'operation-counter'
This is likely becuase you have forgotten to instantiate static class members.
For instance, in the case of an instance of llvm::AnalysisInfoMixin
you are
required to have a static member Key
:
class COpsCounterPass : public llvm::AnalysisInfoMixin<COpsCounterPass> {
private:
static llvm::AnalysisKey Key; //< REQUIRED by llvm registration
friend struct llvm::AnalysisInfoMixin<COpsCounterPass>;
};
If you forget to instantiate this variable in your corresponding .cpp
file,
// llvm::AnalysisKey COpsCounterPass::Key; //< Uncomment this line to make everything work
everything will compile, but the pass will fail to load. There will be no linking errors either.