------- 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

Reply via email to