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