Kimwitu++
-------------------------------------------------------------------------------
Kimwitu++ is distributed as an LLVM benchmark.  The LLVM "no warranty" clause
applies.  Please see llvm/LICENSE.TXT for further details.

Kimwitu++, a system that supports the construction of programs that
use trees or terms as their main data structure.
Copyright (C) 1988-1997  Axel Belinfante, University of Twente
Copyright (C) 1997-2000  Michael Piefel, Humboldt-University Berlin

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

Kimwitu++ is based on Kimwitu.

Output of Kimwitu (and of works based on Kimwitu) can be used without
restriction (even though this output may contain fragments from the
source code of Kimwitu (or of works based on Kimwitu)), with one nota-
ble exception (because Kimwitu is built using itself): The output
generated by Kimwitu (and by works based on Kimwitu) from the source
code of Kimwitu (and from the source code of works based on Kimwitu)
is covered by the GNU General Public License.

The structure-file-io reading and writing code has been derived, in part,
from The Synthesizer Generator (tm), a product of GrammaTech, Inc,
copyright (C) 1991, GrammaTech, Inc. Used with permission.

GrammaTech and Synthesizer Generator, are tradenames of GrammaTech, Inc.,
One Hopkins Place, Ithaca, NY 14850, (607) 273-7340.

The kimwitu++ source base has been changed to accomodate LLVM testing.
The bootstrapping process has been removed.  Long option support has also been
removed to aid in portability to other platforms.

