This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: va_list: ppc
- To: Richard Henderson <rth at cygnus dot com>
- Subject: Re: va_list: ppc
- From: Franz Sirl <Franz dot Sirl-kernel at lauterbach dot com>
- Date: Tue, 14 Sep 1999 02:09:37 +0200
- Cc: gcc-patches at gcc dot gnu dot org
- References: <4.2.0.58.19990806124221.03c16920@mail.lauterbach.com> <4.2.0.58.19990910233853.05a89660@mail.lauterbach.com>
Am Sam, 11 Sep 1999 schrieb Franz Sirl:
>And, what still keeps me from bootstrapping:
>
>In file included from ../../../../cvsx/gccm/libio/builtinbuf.h:32,
> from ../../../../cvsx/gccm/libio/builtinbuf.cc:29:
>../../../../cvsx/gccm/libio/streambuf.h:403: Internal compiler error.
>../../../../cvsx/gccm/libio/streambuf.h:403: Please submit a full bug report.
>../../../../cvsx/gccm/libio/streambuf.h:403: See
><URL:http://www.gnu.org/software/gcc/faq.html#bugreport> for instructions.
This one segfaults in method.c:process_overload_item() cause TYPE_NAME is NULL
for __builtin_va_list:
1480 case RECORD_TYPE:
1481 {
1482 if (extra_Gcode)
1483 OB_PUTC ('G'); /* make it look incompatible with AT&T */
1484 /* drop through into next case */
1485 }
1486 case ENUMERAL_TYPE:
1487 {
1488 tree name = TYPE_NAME (parmtype);
1489
1490 my_friendly_assert (TREE_CODE (name) == TYPE_DECL, 248);
1491
1492 build_qualified_name (name);
1493 break;
1494 }
I tried to set TYPE_NAME in rs6000_build_va_list() to "__va_list_tag" as it was
in the old version like:
t = make_node (TYPE_DECL);
DECL_NAME (t) = "__va_list_tag";
TYPE_NAME (record) = t;
but this did segfault in build_qualified_name() then. Probably because I know
next to nothing about trees (yet) :-).
The minimized testcase is:
typedef __builtin_va_list __gnuc_va_list;
struct _IO_FILE {
int _flags;
char* _IO_read_ptr;
char* _IO_read_end;
};
typedef struct my_va_list_tag {
unsigned char my_gpr;
unsigned char my_fpr;
char *my_overflow_arg_area;
char *my_reg_save_area;
} my_va_list[1];
struct streambuf : public _IO_FILE {
public:
int myvscan(my_va_list ap);
int vscan(__gnuc_va_list ap);
};
Franz.