Undefined symbol when loading pass


I have written a pass to compute the reaching definitions for variables using loads and stores. The class for this pass is named ReachingDef and the pass itself is registered as reaching-def. The compiled reaching-def.so file goes to llvm-home/Release/lib/. This pass is used by another function pass that is registered as iel and the class is named SIL. I have setup AnalysisUsage object of SIL by doing the below:

AU.addRequired<some other pass>();

When I load the pass iel, I get the following error:

opt -load …/…/…/Release/lib/iel.so
: CommandLine Error: Argument ‘inline-threshold’ defined more than once!
opt: CommandLine Error: Argument ‘inline-threshold’ defined more than once!
Error opening ‘…/…/…/Release/lib/iel.so’: …/…/…/Release/lib/iel.so: undefined symbol: _ZTI11ReachingDef
-load request ignored.

It looks like the ReachingDef pass is not being recognized. Please tell me how to fix this.


Don't you need to add a -load for reaching-def also?


Thank you for the answer. That worked. I had defined another pass but I had actually installed that with the rest of llvm but that was quite some time back. Since I was not adding “-load” for that, I thought its not needed for reaching-def as well.