This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: va_list: ppc


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]