File Release Notes and Changelog

Release Name: Open64 4.0

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: