[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