
            RELEASE NOTES FOR SUIF VERSION 1.1.2
            ------------------------------------

SUIF Release 1.1.2 supports dynamically linked libraries on
mips-sgi-irix5.3, sparc-sun-solaris2.3, and i386-sun-solaris2.4
systems only.  It should be easy to add support for dynamically linked
libraries on other systems that support this.  If you are not using
one of the machines for which SUIF knows how to make shared libraries,
regular statically linked libraries will be used.  If your machine is
capable of using dynamically linked libraries but the SUIF system
currently doesn't know how to use them on your machine, you can take a
look in $SUIFHOME/Makefile.defs.  In the section ``SHARED LIBRARY
STUFF'' there are comments describing how to add support for
dynamically linked libraries on other systems.  If you get it working
on another system, please drop a note to suif-talk@suif.stanford.edu
with the details and we may be able to add support for that machine in
a future release.

The problem with baseparsuif 1.0.0.beta.1 and dynamically linked
libraries under IRIX 5.3 has now been fixed -- no change is necessary
to baseparsuif 1.0.0.beta.1, the Makefiles for basesuif 1.1.2 now use
a different method for generating dynamically linked libraries that
does not cause problems with baseparsuif 1.0.0.beta.1.  The only
remaing problem is with the ``runtime'' sub-package of baseparsuif --
the Makefile of that package should be edited to remove the ``-O4''
flag.  The ``-O4'' conflicts with the generation of shared libraries
under Irix 5.3.

SUIF Release 1.1.2 is in line with current draft ANSI C++ standards
whereever it was known to conflict with them.  There may still be ANSI
violations that have not been found, and the ANSI standard may change
before becoming official, but SUIF now does compile and run under
several C++ implementations based on the draft ANSI C++ standard.
These include gcc/g++ version 2.7.2 (on several platforms including
SGI IRIX 5.3, DEC Ultrix, SunOS 4.3, and Solaris), the IRIX 5.3 C++
compiler, and Sun's ProCompiler C++ version 4.0 for Solaris 2.4 on
x86.

-----

*** NATIVE CC AND S2C

Note that the "cc" on many systems, including most MIPS-based
DECstation systems, is not fully ANSI compliant.  The SUIF to C
converter produces ANSI C code, so the back end C compiler must be
fully ANSI.  Since g++/gcc is required to compile SUIF programs
anyway, this can always be used as a back-end compiler if the default
"cc" compiler is not up to the task.  Use the "-cc gcc" option to
scc.  See the man pages for scc and s2c for more information.

The current version of "scc" invokes the linker directly if you do not
specify the "-cc" flag.  This may cause problems on some machines
where other "ld" options are needed (Solaris is an example).  You can
specify the flag "-cc cc" to get around this -- it will invoke "cc"
instead of "ld" at the link stage.  You can also specify explicit
options with the "-option" flag to "scc".  See the man page for
details.

-----

*** GETTING FORTRAN PROGRAMS TO WORK

By default, sf2c is executed with the "-a" flag which gives all
non-common-block variables ``auto'' storage.  This is different from
many Fortran compilers, which allow variables to live across calls by
storing them in statically allocated memory.  This behavior can be
obtained by using the ``-static'' flag with scc.

The semantics of Fortran say that these variable values are not
guaranteed to live across different calls unless they are listed in
``SAVE'' statements, so it is a bug in the Fortran program if it
depends on this behavior.  Nevertheless, many Fortran programs,
including some common benchmarks, have this bug because the program
will still run correctly on many compilers.  The SPEC benchmark wave5
and the Perfect Club benchmark WSS, are known to have this problem.
Such programs should be compiled with the ``-static'' flag of scc, or
the variables which must live across calls should be put in ``SAVE''
statements.

-----

*** COMMON BENCHMARKS

The following results are for a scalar compile using the MIPSEL
backend on a DECstation 5000/240, without using oynk (i.e. no -O
flags):

All of the benchmarks in the SPEC92 SPECint suite, the SPEC92 SPECfp
suite, the PERFECT CLUB suite, and the Livermore Kernels work
properly.

Note that five of these programs (WAVE5 from the SPEC92 SPECfp suite,
GCC from the SPEC92 SPECint suite, and MTS, NAS, and WSS from the
PERFECT CLUB suite) contain bugs; to work correctly with SUIF under
all circumstances, these bugs must be fixed.  This requires minor
changes to the benchmark source code.  See the files
"miscdocs/bench_spec92.txt" and "miscdocs/bench_perfect.txt" for the
complete details.
