[cfe-dev] typeid and fno-rtti
John McCall
rjmccall at apple.com
Fri May 18 11:59:20 PDT 2012
On May 18, 2012, at 6:30 AM, Michel Morin wrote:
> I compiled the following code on clang (trunk) + libc++
> with -fno-rtti compiler option:
>
> #include <typeinfo>
>
> int main (int argc, char* argv[])
> {
> bool x = (typeid(int) == typeid(int)); // Segmentation fault
> return 0;
> }
>
> Then, I got segmentation fault at `bool x = (typeid(int) == typeid(int));`.
> So I checked `&typeid(int)`, and it turned out to be a null pointer.
>
> I suspect that, with -fno-rtti compiler option, `typeid(int)` becomes
> something like `*static_cast<type_info*>(0)`.
> If so, shouldn't we disable `typeid` operator when -fno-rtti is specified?
> The current behavior of `typeid` with -fno-rtti option is useless.
> (c.f. On gcc, the use of `typeid` requires RTTI.)
I agree that -fno-rtti should disable typeid. Please file a bug:
http://llvm.org/bugs/
Also, patches welcome.
John.
More information about the cfe-dev
mailing list