This is the mail archive of the gcc-bugs@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]

Still tinfo.cc internal compiler error 374





Hi,

in April there has been discussed about internal compiler error 374 when  
building tinfo.cc and new.cc. Several messages indicated this bug had been  
fixed. For me it is still present with egcs-19980615. Here my config, the  
compiler command with -v and the preprocessor output.

Andreas Haleger

------------------

Excerpt of configure output:

Links are now set up to build a cross-compiler for i386-pc-cygwin32
  from i486-pc-sco3.2v5.0.2.

------------------

Command for building gcc/cp/tinfo.cc:

/udsk_ent/user/andi/medp/gnu/build-gcc/gcc/xgcc -v  
-B/udsk_ent/user/andi/medp/gnu/build-gcc/gcc/ -O2  
-I/udsk_d01/libunix/products/gnu/cygnus/egcs-19980615/gcc/../winsup/include  
-DCROSS_COMPILE -DIN_GCC    -g -I./include   -g1  -DIN_LIBGCC2  
-D__GCC_FLOAT_NOT_NEEDED   -I.  
-I/udsk_d01/libunix/products/gnu/cygnus/egcs-19980615/gcc  
-I/udsk_d01/libunix/products/gnu/cygnus/egcs-19980615/gcc/config -c  
/udsk_d01/libunix/products/gnu/cygnus/egcs-19980615/gcc/cp/tinfo.cc

Reading specs from /udsk_ent/user/andi/medp/gnu/build-gcc/gcc/specs
gcc version egcs-2.91.41 19980615 (gcc2 ss-980502 experimental)
 /udsk_ent/user/andi/medp/gnu/build-gcc/gcc/cpp -lang-c++ -v  
-I/udsk_d01/libunix/products/gnu/cygnus/egcs-19980615/gcc/../winsup/include  
-I./include -I. -I/udsk_d01/libunix/products/gnu/cygnus/egcs-19980615/gcc  
-I/udsk_d01/libunix/products/gnu/cygnus/egcs-19980615/gcc/config -isystem  
/udsk_ent/user/andi/medp/gnu/build-gcc/gcc/include -undef -D__GNUC__=2  
-D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=91 -Di386 -D_WIN32 -D__CYGWIN32__  
-DWINNT -D_X86_=1 -D__STDC__=1 -D__stdcall=__attribute__((__stdcall__))  
-D__cdecl=__attribute__((__cdecl__)) -D__i386__ -D_WIN32 -D__CYGWIN32__  
-D__WINNT__ -D_X86_=1 -D__STDC__=1 -D__stdcall=__attribute__((__stdcall__))  
-D__cdecl=__attribute__((__cdecl__)) -D__i386 -D__WINNT -Asystem(winnt)  
-Acpu(i386) -Amachine(i386) -D__EXCEPTIONS -D__OPTIMIZE__ -g -g1 -remap  
-Di386 -Asystem(unix) -Acpu(i386) -Amachine(i386) -D__i386__ -Asystem(unix)  
-Acpu(i386) -Amachine(i386) -DCROSS_COMPILE -DIN_GCC -DIN_LIBGCC2  
-D__GCC_FLOAT_NOT_NEEDED  
/udsk_d01/libunix/products/gnu/cygnus/egcs-19980615/gcc/cp/tinfo.cc  
/usr/tmp/cca0001p.ii
GNU CPP version egcs-2.91.41 19980615 (gcc2 ss-980502 experimental) (80386,  
BSD syntax)
#include "..." search starts here:
#include <...> search starts here:
 .
 /udsk_d01/libunix/products/gnu/cygnus/egcs-19980615/gcc
 /udsk_d01/libunix/products/gnu/cygnus/egcs-19980615/gcc/config
 /udsk_ent/user/andi/medp/gnu/build-gcc/gcc/include
  
/udsk_ent/user/andi/medp/gnu/install/lib/gcc-lib/i386-cygwin32/egcs-2.91.41/include
 /udsk_ent/user/andi/medp/gnu/install/i386-cygwin32/include
End of search list.
 /udsk_ent/user/andi/medp/gnu/build-gcc/gcc/cc1plus /usr/tmp/cca0001p.ii  
-quiet -dumpbase tinfo.cc -g -g1 -O2 -version -o /usr/tmp/cca0001p.s
GNU C++ version egcs-2.91.41 19980615 (gcc2 ss-980502 experimental)  
(i386-cygwin32) compiled by CC.
<internal>:0: Internal compiler error 374.
<internal>:0: Please submit a full bug report to `egcs-bugs@cygnus.com'.

------------------ Output of above command compiled with -E

# 1 "/udsk_d01/libunix/products/gnu/cygnus/egcs-19980615/gcc/cp/tinfo.cc"



























# 1 "/udsk_ent/user/andi/medp/gnu/build-gcc/gcc/include/stddef.h" 1 3

































# 61 "/udsk_ent/user/andi/medp/gnu/build-gcc/gcc/include/stddef.h" 3

























































typedef int ptrdiff_t;



















































typedef unsigned int size_t;













































































































typedef unsigned int  wint_t;








# 317 "/udsk_ent/user/andi/medp/gnu/build-gcc/gcc/include/stddef.h" 3


























# 28 "/udsk_d01/libunix/products/gnu/cygnus/egcs-19980615/gcc/cp/tinfo.cc" 2

# 1 "/udsk_d01/libunix/products/gnu/cygnus/egcs-19980615/gcc/cp/tinfo.h" 1



# 1 "/udsk_ent/user/andi/medp/gnu/build-gcc/gcc/include/typeinfo" 1 3






#pragma interface "typeinfo"

# 1 "/udsk_ent/user/andi/medp/gnu/build-gcc/gcc/include/exception" 1 3






#pragma interface "exception"

extern "C++" {





class exception {
public:
  exception () { }
  virtual ~exception () { }
  virtual const char* what () const;
};

class bad_exception : public exception {
public:
  bad_exception () { }
  virtual ~bad_exception () { }
};

typedef void (*terminate_handler) ();
typedef void (*unexpected_handler) ();

terminate_handler set_terminate (terminate_handler);
void terminate (void) __attribute__ ((__noreturn__));
unexpected_handler set_unexpected (unexpected_handler);
void unexpected (void) __attribute__ ((__noreturn__));
bool uncaught_exception ();





}


# 9 "/udsk_ent/user/andi/medp/gnu/build-gcc/gcc/include/typeinfo" 2 3


extern "C++" {





class type_info {
private:

  type_info& operator= (const type_info&);
  type_info (const type_info&);

protected:
  type_info (const char *n): _name (n) { }

  const char *_name;

public:

  virtual ~type_info ();

  bool before (const type_info& arg) const;
  const char* name () const
    { return _name; }
  bool operator== (const type_info& arg) const;
  bool operator!= (const type_info& arg) const;
};




# 54 "/udsk_ent/user/andi/medp/gnu/build-gcc/gcc/include/typeinfo" 3


class bad_cast : public exception {
public:
  bad_cast() { }
  virtual ~bad_cast() { }
};

class bad_typeid : public exception {
 public:
  bad_typeid () { }
  virtual ~bad_typeid () { }
};





}

# 4 "/udsk_d01/libunix/products/gnu/cygnus/egcs-19980615/gcc/cp/tinfo.h" 2






struct __user_type_info : public std::type_info {
  __user_type_info (const char *n) : type_info (n) {}



  virtual void* dcast (const type_info &, int, void *,
                       const type_info * = 0, void * = 0) const;
};



class __si_type_info : public __user_type_info {
  const __user_type_info &base;

public:
  __si_type_info (const char *n, const __user_type_info &b)
    : __user_type_info (n), base (b) { }

  virtual void *dcast (const type_info &, int, void *,
                       const type_info * = 0, void * = 0) const;
};



typedef unsigned int USItype    __attribute__ ((mode (SI)));

struct __class_type_info : public __user_type_info {
  enum access { PUBLIC = 1, PROTECTED = 2, PRIVATE = 3 };

  struct base_info {
    const __user_type_info *base;
    USItype offset: 29;
    bool is_virtual: 1;
    access access: 2;
  };

  const base_info *base_list;
  size_t n_bases;

  __class_type_info (const char *name, const base_info *bl, size_t bn)
    : __user_type_info (name), base_list (bl), n_bases (bn) {}


  virtual void* dcast (const type_info &, int, void *,
                       const type_info * = 0, void * = 0) const;
};
# 29 "/udsk_d01/libunix/products/gnu/cygnus/egcs-19980615/gcc/cp/tinfo.cc" 2

# 1 "/udsk_ent/user/andi/medp/gnu/build-gcc/gcc/include/new" 1 3






#pragma interface "new"
# 1 "/udsk_ent/user/andi/medp/gnu/build-gcc/gcc/include/stddef.h" 1 3
# 342 "/udsk_ent/user/andi/medp/gnu/build-gcc/gcc/include/stddef.h" 3

# 8 "/udsk_ent/user/andi/medp/gnu/build-gcc/gcc/include/new" 2 3



extern "C++" {





  class bad_alloc : public exception {
  public:
    virtual const char* what() const throw() { return "bad_alloc"; }
  };

  struct nothrow_t {};
  extern const nothrow_t nothrow;
  typedef void (*new_handler)();
  new_handler set_new_handler (new_handler);






void *operator new (size_t) throw (std::bad_alloc);
void *operator new[] (size_t) throw (std::bad_alloc);
void operator delete (void *) throw();
void operator delete[] (void *) throw();
void *operator new (size_t, const std::nothrow_t&) throw();
void *operator new[] (size_t, const std::nothrow_t&) throw();
void operator delete (void *, const std::nothrow_t&) throw();
void operator delete[] (void *, const std::nothrow_t&) throw();


inline void *operator new(size_t, void *place) throw() { return place; }
inline void *operator new[](size_t, void *place) throw() { return place; }
}


# 30 "/udsk_d01/libunix/products/gnu/cygnus/egcs-19980615/gcc/cp/tinfo.cc" 2






std::type_info::
~type_info ()
{ }

extern "C" void
__rtti_class (void *addr, const char *name,
              const __class_type_info::base_info *bl, size_t bn)
{ new (addr) __class_type_info (name, bl, bn); }

extern "C" void
__rtti_si (void *addr, const char *n, const std::type_info *ti)
{
  new (addr) __si_type_info
    (n, static_cast <const __user_type_info &> (*ti));
}

extern "C" void
__rtti_user (void *addr, const char *name)
{ new (addr) __user_type_info (name); }




void * __user_type_info::
dcast (const type_info& to, int, void *addr, const type_info *, void *) const
{ return (*this == to) ? addr : 0; }

void * __si_type_info::
dcast (const type_info& to, int require_public, void *addr,
       const type_info *sub, void *subptr) const
{
  if (*this == to)
    return addr;
  return base.dcast (to, require_public, addr, sub, subptr);
}

void* __class_type_info::
dcast (const type_info& desired, int is_public, void *objptr,
       const type_info *sub, void *subptr) const
{
  if (*this == desired)
    return objptr;

  void *match_found = 0;
  for (size_t i = 0; i < n_bases; i++)
    {
      if (is_public && base_list[i].access != PUBLIC)
        continue;

      void *p = (char *)objptr + base_list[i].offset;
      if (base_list[i].is_virtual)
        p = *(void **)p;
      p = base_list[i].base->dcast (desired, is_public, p, sub, subptr);
      if (p)
        {
          if (match_found == 0)
            match_found = p;
          else if (match_found != p)
            {
              if (sub)
                {



                  const __user_type_info &d =
                    static_cast <const __user_type_info &> (desired);

                  void *os = d.dcast (*sub, 1, match_found);
                  void *ns = d.dcast (*sub, 1, p);

                  if (os == ns)
                     ;
                  else if (os == subptr)
                    continue;
                  else if (ns == subptr)
                    {
                      match_found = p;
                      continue;
                    }
                }



              return 0;
            }
        }
    }

  return match_found;
}


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