[Bug c++/31488] va_list considered non-POD
ubizjak at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Dec 29 23:36:00 GMT 2008
------- Comment #8 from ubizjak at gmail dot com 2008-12-29 23:29 -------
(In reply to comment #7)
> if (! CLASS_TYPE_P (t))
> return 0; /* other non-class type (reference or function) */
> if (CLASSTYPE_NON_POD_P (t))
> return 0;
> return 1;
>
> One of those two should be set correctly.
In alpha/alpha.c we have:
alpha_build_builtin_va_list (void)
{
tree base, ofs, space, record, type_decl;
if (TARGET_ABI_OPEN_VMS || TARGET_ABI_UNICOSMK)
return ptr_type_node;
record = (*lang_hooks.types.make_type) (RECORD_TYPE);
type_decl = build_decl (TYPE_DECL, get_identifier ("__va_list_tag"), record);
TREE_CHAIN (record) = type_decl;
TYPE_NAME (record) = type_decl;
/* C++? SET_IS_AGGR_TYPE (record, 1); */
...
So, actually there is no way we can SET_CLASS_TYPE_P (t, 1) on the created
RECORD_TYPE. IOW, we should somehow be able to reach cp/lex.c/make_class_type
() function from target .c file.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31488
More information about the Gcc-bugs
mailing list