This directory contains a hodgepodge of problem reports that appeared on
the egcs-bugs or egcs mailing lists.  Just like the reports themselves,
they tend to be poorly understood and poorly organized.  However, we
drop them into the testsuite on the premise that internal compiler errors
are always bad - no matter how bogus the source.  

If you really understand C++ (and you know who you are) if you find
entries in this area that are bogus, feel free to just fix them or nuke
them.  You don't need my permission.

Many of the first entries in this area were done in "block mode" by
whipping through many months of archives.  In hindsight, some important
information was lost, but being picky on over 8,000 messages is a sure
way to never get out of the gate.

We'll do better now.

Robert Lipe


Copyright (C) 1998-2021 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
