[C++ PATCH] Fix aliasing warnings for typeid (PR c++/32260)
Jakub Jelinek
jakub@redhat.com
Thu Nov 1 13:03:00 GMT 2007
On Thu, Nov 01, 2007 at 01:53:46PM +0100, Richard Guenther wrote:
> The comment hints at that this should be
>
> gcc_assert (! TYPE_ALIAS_SET_KNOWN_P (pseudo_type_info));
>
> or does this break at any time?
Sure, typeid_ok_p is called many times (once for each typeid parsed
at least) and once we set it it will be TYPE_ALIAS_SET_KNOWN_P
(pseudo_type_info).
I could perhaps add some static bool variable, so that this would be done
only once. But is it worth it?
static bool typeid_ok_p_called = false;
tree type_info_type;
and:
if (typeid_ok_p_called)
return true;
typeid_ok_p_called = true;
pseudo_type_info
= VEC_index (tinfo_s, tinfo_descs, TK_TYPE_INFO_TYPE)->type;
gcc_assert (! TYPE_ALIAS_SET_KNOWN_P (pseudo_type_info));
/* Make sure abi::__type_info_pseudo has the same alias set
as std::type_info. */
type_info_type = TYPE_MAIN_VARIANT (const_type_info_type_node);
TYPE_ALIAS_SET (pseudo_type_info) = get_alias_set (type_info_type);
Jakub
More information about the Gcc-patches
mailing list