* Martin Michlmayr [EMAIL PROTECTED] [2006-04-11 12:02]:
Anyway, you need -O2 -Werror -c to see the ICE with 4.2.
A test case from delta is attached but it's still fairly large. The
ICE happens on AMD64, but not on i386.
(sid)3578:[EMAIL PROTECTED]: ~/delta/bin] /usr/lib/gcc-snapshot/bin/g++ -O2
-Werror mini.c
cc1plus: warnings being treated as errors
mini.c: In function 'void do_update(int)':
mini.c:278: warning: deprecated conversion from string constant to 'char*''
mini.c: At global scope:
mini.c:340: error: inlined_to pointer is set but no predecesors found
virtual SlaveProgress::~SlaveProgress()/96: (inline copy in void
do_update(int)/17) availability:available(15) 35 insns (309 after inlining)
tree externally_visible finalized inlinable
called by:
calls: OpProgress::~OpProgress()/2 (inlined) void operator delete(void*)/64
mini.c:340: internal compiler error: verify_cgraph_node failed
Please submit a full bug report,
with preprocessed source if appropriate.
See URL:http://gcc.gnu.org/bugs.html for instructions.
zsh: exit 1 /usr/lib/gcc-snapshot/bin/g++ -O2 -Werror mini.c
(sid)3579:[EMAIL PROTECTED]: ~/delta/bin]
--
Martin Michlmayr
http://www.cyrius.com/
extern C
{
typedef long unsigned int size_t;
__extension__ typedef unsigned int __mode_t;
__extension__ typedef int __pid_t;
__extension__ typedef long int __ssize_t;
extern int snprintf (char *__restrict __s, size_t __maxlen,
__const char *__restrict __format, ...) throw ()
__attribute__ ((__format__ (__printf__, 3, 4)));
extern int memcmp (__const void *__s1, __const void *__s2,
size_t __n) throw () __attribute__ ((__pure__))
__attribute__ ((__nonnull__ (1, 2)));
extern C
{
typedef __ssize_t ssize_t;
}
extern void exit (int __status) throw () __attribute__ ((__noreturn__));
extern int access (__const char *__name, int __type) throw ()
__attribute__ ((__nonnull__ (1)));
extern ssize_t read (int __fd, void *__buf, size_t __nbytes);
extern __pid_t fork (void) throw ();
}
namespace std
{
template typename _Alloc class allocator;
template class _CharT struct char_traits;
template typename _CharT, typename _Traits =
char_traits _CharT , typename _Alloc =
allocator _CharT class basic_string;
typedef basic_string char string;
template typename _Tp inline const _Tp min (const _Tp __a,
const _Tp __b)
{
}
}
namespace __gnu_cxx
{
template typename _Tp class new_allocator
{
public:typedef size_t size_type;
template typename _Tp1 struct rebind
{
typedef new_allocator _Tp1 other;
};
};
}
namespace std
{
template typename _Tp class allocator:public __gnu_cxx::new_allocator
_Tp
{
};
template struct char_traits char
{
typedef char char_type;
static int compare (const char_type * __s1, const char_type * __s2,
size_t __n)
{
return memcmp (__s1, __s2, __n);
}
};
}
typedef int _Atomic_word;
namespace __gnu_cxx
{
_Atomic_word
__attribute__ ((__unused__)) __exchange_and_add (volatile _Atomic_word *
__mem, int __val);
}
namespace std
{
template typename _CharT, typename _Traits,
typename _Alloc class basic_string
{
typedef typename _Alloc::template rebind
_CharT ::other _CharT_alloc_type;
public:typedef _Traits traits_type;
typedef _Alloc allocator_type;
typedef typename _CharT_alloc_type::size_type size_type;
private:struct _Rep_base
{
_Atomic_word _M_refcount;
};
struct _Rep:_Rep_base
{
_CharT *_M_refdata () throw ()
{
return reinterpret_cast _CharT * (this + 1);
}
void _M_dispose (const _Alloc __a)
{
if (__builtin_expect (this != _S_empty_rep (), false))
if (__gnu_cxx::__exchange_and_add (this-_M_refcount, -1) = 0)
_M_destroy (__a);
}
void _M_destroy (const _Alloc ) throw ();
};
struct _Alloc_hider:_Alloc
{
_Alloc_hider (_CharT * __dat, const _Alloc __a):_Alloc (__a),
_M_p (__dat)
{
}
_CharT *_M_p;
};
private:mutable _Alloc_hider _M_dataplus;
_CharT *_M_data () const
{
}
_Rep *_M_rep () const
{
return ((reinterpret_cast _Rep * (_M_data ()))[-1]);
}
static _Rep _S_empty_rep ()
{
}
public:inline basic_string ();
basic_string (const basic_string __str);
basic_string (const _CharT * __s, const _Alloc __a = _Alloc ());
~basic_string ()
{
_M_rep ()-_M_dispose (this-get_allocator ());
}
public:size_type size ()const
{
}
basic_string append (const basic_string __str);
const _CharT *c_str () const
{
return _M_data ();
}
const _CharT *data () const
{
}
allocator_type get_allocator () const
{
return _M_dataplus;
}
int compare (const basic_string __str) const
{
const size_type __size = this-size ();
const size_type __osize = __str.size ();
const