CallGraphSCCPass: symbol not found

Hi,

I've written a CallGraphSCCPass that compiles successfully, but when I try to run it with opt, it fails:

   Symbol not found: __ZTIN4llvm16CallGraphSCCPassE

If I simply change the pass to be a FunctionPass or a ModulePass, opt can run it just fine.

I'm on Mac OS X, so I thought perhaps I was running into bug #2771 [1], but I'm getting the same error on Ubuntu Linux:

   undefined symbol: _ZTIN4llvm16CallGraphSCCPassE

As before, the Linux environment has no problems running a FunctionPass or ModulePass. It's only CallGraphSCCPass that gives me trouble.

This is with a plain-vanilla install of the LLVM 2.7 release.

Is there something special about LLVM's handling of CallGraphSCCPass that would explain this error? Thanks,

Trevor

[1] http://llvm.org/bugs/show_bug.cgi?id=2771

Hi Trevor,

I've written a CallGraphSCCPass that compiles successfully, but when I
try to run it with opt, it fails:

    Symbol not found: __ZTIN4llvm16CallGraphSCCPassE

$ c++filt _ZTIN4llvm16CallGraphSCCPassE
typeinfo for llvm::CallGraphSCCPass

LLVM TOT has RTTI turned off as far as I know (not sure about 2.7). Are you
making use of RTTI?

Ciao,

Duncan.

I'm not explicitly using it, although my pass was using Boost, a portion of which requires RTTI, so I had enabled RTTI in my pass's Makefile. I have now disabled RTTI in my pass, and I even rebuilt LLVM with RTTI enabled (REQUIRES_RTTI=1), but I'm still getting the same error.

Any other suggestions? Thanks,

Trevor

P.S. What does TOT stand for?

My pass uses exceptions, and that turned out to be the problem. Rebuilding LLVM with exception handling support (REQUIRES_EH=1) fixed it. Not sure why this was only an issue with CallGraphSCCPass, though. Thanks,

Trevor