[llvm-dev] Removing "fno-rtti" flag from llvm-config --cxxflags

David Chisnall via llvm-dev llvm-dev at lists.llvm.org
Tue May 23 05:29:43 PDT 2017


On 23 May 2017, at 13:18, Jajoo, Malhar via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> 
> Hi everyone,
> 
> I just had a question - 
> 
> I am aware that LLVM supports it's own form of RTTI ( using dyn_cast<>() ,etc) but 
> I wish to use C++ RTTI currently.
> 
> I have tried building with  "cmake -G "Unix Makefiles" -LLVM_ENABLE_RTTI=ON"
> but that doesnt seem to remove the "fno-rtti" flag from llvm-config 
> and I still get an error when I try using "dynamic_cast<>" from C++ RTTI.

You missed the D.  All CMake definition flags need this.  Try:

 -DLLVM_ENABLE_RTTI=ON 

Also, I’d recommend using Ninja not Unix Makefiles.

Note that LLVM did work quite well with programs using RTTI without enabling RTTI for LLVM until someone broke IR/Instructions.h about a year ago to remove the out-of-line definitions and force the vtable for several instructions to be emitted in every compilation unit including this file (i.e. a lot of them).  This means that any file using RTTI that includes this header tries to emit a vtable with type info that refers to superclass objects defined elsewhere.  Fixing this would make LLVM significantly more useful as a library.

David



More information about the llvm-dev mailing list