File Release Notes and Changelog
Notes:
Open64 Compiler Version 4.0 Release Notes
June 13, 2007
1. Overview
2. New Features
2.1 Front End New Features
2.2 Back End New Features
3. The Packages of the Compiler Suite
4. Installing the Compiler Suite
4.1 Install from bz2 Package
4.2 Install from RPM packages
5. Build the compiler Suite - directly from source
4.1 Prerequisites
4.2 Build Steps
4.3 Build Fortran Front-End
4.4 Some Notes on Build
6. Bug Reporting
7. Known Problems, Limitation and Some Notes
8. Credits
1. Overview
=============
The objective of the Osprey project is to bring the Open64 compiler
to that of a production quality compiler and catch up wit the GCC/G++
features evolution. In this release, we introduce a new GCC 4.0.2 based
front end to make the compiler compatible both with GCC 3.x and 4.x.
Also, we integrate Pathscale's code generator for x86_64. With the x86_64
code generator, the compiler can not only generate code for IA64, but also
for IA32/x86_64. Most importantly, the source code of all previous archives
are merged into one subversion tree and it is readily available for
researchers and developers to join the development and incrementally
check in changes. The website for that is
http://www.open64.net/
The release consists of two kinds of packages: a suite of pre-built
compiler binaries including C, C++, F95 and related archives, and
a suite of corresponding compiler source codes. The pre-built compilers
are build using a self-build bootstrap process. They are provided both in
.bz2 and RPM packages.
We will aggressively continue to update the GCC/G++ front end to the
latest version after this release. Another important focus after this
release is further performance improvement in the HPC area. We are
looking forward for collaboration from the open source community for
this effort. The SVN source control and Bugzilla system are built up
to facilitate this. Our checkin testing will be continuously improved
to achieve the "checkin early and checkin fast with little to no
impact to overall quality" development environment.
For a more detailed description of our kernel boot work-arounds and
procedure, our performance comparison numbers, please send mail to
http://sourceforge.net/projects/open64.
2. New Features
2.1 Front End New Features
-------------------
In this release, the compiler contains two different GCC based front-ends.
One is based on the GCC 3.3.1, which is compatible with GCC 3.x and the
other is based on the GCC 4.0.2, which is compatible with GCC 4.x.
The new GCC 4.0.2 based front end has better C++ ABI support than the
GCC 3.3.1 based front end.
The driver of the compiler will determine which front end should be used
based on the version of GCC is installed on the system. If the first gcc
found in the $PATH is GCC 4.x, the GCC 4.0.2 based front end will be invoked.
Otherwise, the GCC 3.3.1 based front end will be used.
To force using GCC 3.3.1 or GCC 4.0.2 based front end, please add
'-gnu3' or '-gnu4' to the command line, respectively.
2.2 Back End New Features
-------------------
In this release, we integrate Pathscale's code generator for x86_64 into
the compiler. Now, the compiler can generate code not only for Itanium, but
also for x86_64/ia32. We have tested the back end at -O0/-O2/-O3.
The PBO (Profile-Based Optimization) and ipa (Inter-Procedure
Analysis/Optimization) is not tested heavily yet. They may not work on both
Itanium and x86_64/IA32.
3. The Packages of the Compiler Suite
======================================
This compiler is available in both in binary and source-code form for
different target machines.
o: open64-4.0-0.src.tar.bz2
This package contains all compiler's source code. it's machine independent.
o:open64-4.0-0.ia64.tar.bz2
This package contains all the binary code for ia64 machine including
prebuilt library. The compiler is built on an Itanium2 based system with
kernel 2.6.9 and glibc 2.3.4. The OS is RHEL4 for IA64. The GCC version
is 3.4.5. The compiler is built twice for releasing. The first stage
is built by 'gcc -O0', the we use the compiler built in the first stage
to build the release compiler by 'opencc -O2'. The libraries is built
by the release compiler.
o:open64-4.0-0.i386.tar.bz2, open64-4.0-0.x86_64.tar.bz2
These two package are the same, contain all the binary code for i386 and
x86_64 machine. The compiler is built on an x86_64 based system with
kernel 2.6.9 and glibc 2.3.4. The OS is RHEL4 for x86_64. We upgrade the
GCC version to 4.1.2. The compiler is built by 'gcc -O2'. The 64-bit and
32-bit libraries are built on the same system by the Open64 compiler itself.
o:open64-4.0-0.i386.rpm, open64-4.0-0.x86_64.rpm, open64-4.0-0.ia64.rpm
these three packages are binaries rpm for different machine. The binaries
are the same in both bz2 and rpm packages. It's more easy to install the
compiler from the rpm.
4. Installing the Compiler Suite
=================================
4.1 Install from bz2 Package
-------------------
Before installing the compiler, the environment variable $TOOLROOT
should be set properly. As the name suggests, this variable specifies
the root of the installation hierarchy. You can set it to anywhere
you have write permission. For example, in GNU BASH this may be done
with the following command: may set this variable by adding this
command to the $HOME/.bash_profile file:
export TOOLROOT=$HOME/mycompiler
After that, run 'source $HOME/.bash_profile' to make the change effective
Now, to complete the installation:
o. expand open64-4.0-0-ia64.tar.gz with the command:
tar zxvf open64-4.0-0-ia64.tar.gz
o. Run script 'INSTALL.sh'
The C, C++, Fortran compilers are now available in folder
$TOOLROOT/bin. They are opencc, openCC, openf90 respectively.
4.2 Install from RPM Package
-------------------
To install the compiler from rpm:
$ rpm -ivh open64-4.0-0.ia64.rpm
This command will install the Open64 compiler to /opt/open64. The C, C++,
Fortran compilers are in folder /opt/open64/bin.
To install the compiler to another location:
$ rpm --prefix=/path/to/folder -ivh open64-4.0-0.ia64.rpm
Then the compiler will be installed to /path/to/folder
5. Build the compiler Suite - directly from source
====================================================
If you choose to build the compiler suite from the source tar ball,
follow the steps outlined below.
5.1 Prerequisites
-------------------
In order to compile Open64 successfully, your system should meet the
following requirements:
o.Linux OS on IA64/ix86/x86_64
Open64 as well as its variants have been successfully built on many Unix
variants and Unix-like systems. This release has only been tested extensively
on IA64/ix86/x86_64 running Linux operating systems. If you are going to
build it on any platform other than Linux on IA64/ix86/x86_64, you may need
to make some minor changes to the source code.
o.GNU Compiler Collection
Currently, GCC 3.3.x through 4.1.x are supported. GCC 4.1.x is preferred.
o.A open64 binary for building the Fortran Front End
you can just download the Open64 binary for system and install it to
some place and make sure that openf90 is in your PATH before building
the Fortran front end.
5.2 Build Steps
-------------------
Follow these steps to build the compiler:
Step 1. Expand the source tarball
After that, the whole source hierarchy will be in directory rooted at
open64-4.0-0/. Change working directory to open64-4.0-0/.
Step 2. Build the compiler components by simply invoking command:
make or make V=1(V=1 will show all the building information)
If you want to build a debuggable compiler, use this command instead:
make BUILD_OPTIMIZE=DEBUG
note that, if you type "make", it will only build the compiler's source
code by default it won't build the prebuilt library. if you want to
build it by yourself, type
make library
The defaut Fortran compiler in source code is openf90. If the openf90 is
not in the PATH, the Fortran front end will not be built. During the
installation, the prebuilt version will be picked up. Then, we can use
it to build the Fortran front end again.
Developers may find this command handy in building individual component,
say wopt.so:
make BUILD_OPTIMIZE=DEBUG wopt.so
step 3. set environment variable TOOLROOT to anywhere you have write
permission as detailed in section 3.
If you do not want to use $TOOLROOT, just skip this step.
step 4. call 'make install' or 'install_compiler.sh' to install
all compiler components and archives.
If $TOOLROOT is set, the compiler will be installed to that folder.
Otherwise, a path will be prompted.
The C, C++, Fortran compilers are now available in folder
$TOOLROOT/bin/ They are opencc, openCC, openf90 respectively.
5.3.Build Fortran Front-End
-------------------------------
The Fortran front-end executable is provided in both
binary and source packages. Normally, you need *NOT* to build it by yourself.
If you are going to build one, make sure that an Openf90 is already in
your $PATH(you need to download a binary form and install it somewhere).
then just type:
make mfef95.
the makefile will use a pre-hand openf90 to build the new mfef95 for you.
5.4 Some Notes on Build
--------------------------
o.The compiler is built with flag '-Werror' which treats warnings as error.
If the build process terminates due to warnings, you can get around this
with:
make ... ERROR_ON_WARNINGS="" ...
i.e. simply repeat the make process with ERROR_ON_WARNINGS="".
o.GNU Make utility version 3.81 is shipped with many of the latest Linux
distributions. Building the compiler suite with it may cause some weird
complaints pertaining to dependent files don't exist (they are actually
there). You can ignore those complaints, and repeat the make command to
continue.
6. Bug Reporting
==================
You are WELCOME to report bugs. The bugs tracked at
http://bugs.open64.net/. Bug reports should include these items in
order to be reproduced:
o. the compiler release version;
o. system details -- the OS, libc etc;
o. the compilation flags that trigger the bug;
o. the test file if applicable (it is highly appreciated if the test file
is minimized);
o. the correct output of the test file.
7. Known Problems, Limitation and Some Notes
==============================================
o. Due to limited resources, the archives shipped with this compiler may
not be built successfully from the source. 'make library' may not work
correctly.
o. libmsgi.a in prebuilt library didn't work very well, so the compiler won't
link it by default.
o. we can bootstrap the compiler on ia64, but may meet error at x8664 if the
first stage compiler is built by gcc3.x
o. Currently, we build the compiler *ONLY* on Linux/IA64, x86_64, i386.
'make cross' is supposed to be used to build the cross compiler on
Linux/IA32 systems targeting IA64. However, we have not tested this
thoroughly.
o. The perlbench benchmark in CPU2006 suite may not run successfully without
some changes to its source code. It is *NOT* an Open64 bug. The problem is
with the perlbench benchmark itself. Please check the bug-81
(https://bugs.open64.net/) for details. This problem can be solved by
deleting following lines from file spec_config.h (of perlbench benchmark):
1172 #undef HASATTRIBUTE
1173 #ifndef HASATTRIBUTE
1174 #define __attribute__(_arg_)
1175 #endif
o. IPA and PBO option is not support very well in this release. See the
bugzillar or detail bug information about IPA and Feedback.
o. A full list of known bugs can be found in our bug database. You can visit
http://bugs.open64.net
to view them.
8. Credits
============
This project is led by Shin-Ming Liu at HP Inc. It is the result of
partnership between Tsinghua University, Institute of Computing
Technology at the Chinese Academy of Science, CAPSL research laboratory
at the University of Delaware, and Hewlett-Packard, Inc.
We'd also like to acknowledge the contributions of QLogic Inc
(formerly PathScale Inc.), Google Inc, Paul Yuan at Peking University
and Sun Chan at SimpLight Nanoelectronics.
Changes: