-------------------------------------------------------------------------------
			 The Odyssey Compiler v1.0alpha
				   June 1999

				 Diego Novillo
			      diego@cs.ualberta.ca

			  Computing Science Department
		    University of Alberta, Edmonton, Canada
-------------------------------------------------------------------------------


Introduction
------------

Odyssey is an optimizing compiler for explicitly parallel languages
which is still in the very early stages of development. This is the
first public release. Most of the optimizations still do not work
properly and they are being changed almost daily. The base analysis
framework (CSSAME) is almost finished but it definitely contains some
rough edges.

The main goal of the project is to develop new optimization techniques
that take advantage of the parallel and synchronization structure of
the program. We are also interested in adapting traditional
optimization techniques to work on explicitly parallel programs.


Contents
--------

The source directory tree included in this distribution contains
the CSSAME library (Concurrent SSA with Mutual Exclusion)
library, the PFG (Parallel Flow Graph) library and a few support
libraries.

This software has been developed on IRIX 6.5 using SGI native threads
and PThreads. The compiler makes heavy use of the STL. It works fine
with the SGI version of STL and the SGI compilers. I have not tried it
on other platforms. Please let me know if you port it to other
platforms so that I can incorporate your changes into the main
release.


String
UtilLib
src/CSSAMELib	The CSSAME library. CSSAME (pronounced sesame) is an
		extension to the SSA form to support explicitly
		parallel programs with mutual exclusion
		synchronization.

src/Debug	A third-party debugging library written by Anatoly
		Kardash <anatoly-k@usa.net>. It is used heavily to
		trace the actions of the compiler and its libraries.

src/FindPar
src/FixPgen
src/GenPar	Utility programs to recognize parallel sections in the
		code and generate the annotations recognized by SUIF
		to produce parallel code.

src/OCC		The main compiler driver.

src/OptLib	The optimization library. All the transformation
		passes are in here.

src/ParLib	A support library to recognize cobegin/coend and
		doall statements in C.

src/Scripts	Shell scripts to compile and link Odyssey
		programs. The main compiler (odc) driver lives
		here.

src/ShowCCFG	A stand-alone program to generate a dotty or xvcg
		file with the flowgraph of the program.

src/String	String library used mainly for error and warning
		messages.

src/UtilLib	Various functions not related to anything in
		particular. Mainly used to display parts of
		source files when displaying the CSSAME form.

A top level Makefile will build and install the library. It uses SUIF
environment variables to determine what compiler and architecture to
use. To compile the library type 'make install'.

The only environment variable that you need define is ODYSSEY, which
is used by the Makefile and the compiler itself (occ) to determine the
location of include files and libraries. If it is left undefined, it
defaults to $HOME/Odyssey.


Documentation
-------------

That would be very nice, thank you. I haven't found time to write any
kind of internal or user-level documentation. I use the header files
and most source files have extensive comments. Hopefully it all makes
some sense (It does to me anyway).


Copyright and Disclaimer
------------------------

This software is provided under the same terms described in the SUIF
copyright included below. I only ask that you give me credit for it
and send me any bug corrections and/or enhancements that you make to
the library.

/*

    Copyright (C) 1994 Stanford University

    All rights reserved.

    NOTICE:  This software is provided ``as is'', without any
    warranty, including any implied warranty for merchantability or
    fitness for a particular purpose.  Under no circumstances shall
    Stanford University or its agents be liable for any use of, misuse
    of, or inability to use this software, including incidental and
    consequential damages.

    License is hereby given to use, modify, and redistribute this
    software, in whole or in part, for any purpose, commercial or
    non-commercial, provided that the user agrees to the terms of this
    copyright notice, including disclaimer of warranty, and provided
    that this copyright notice, including disclaimer of warranty, is
    preserved in the source code and documentation of anything derived
    from this software.  Any redistributor of this software or
    anything derived from this software assumes responsibility for
    ensuring that any parties to whom such a redistribution is made
    are fully aware of the terms of this license and disclaimer.

    "SUIF" is a trademark of Stanford University.
*/
