Release Notes: PathScale EKOPath Compiler Suite - Release 2.1
=============================================================

  Copyright 2002, 2003, 2004, 2005 PathScale, Inc. All Rights Reserved.

  Thank you for purchasing the PathScale EKOPath Compiler Suite. This file
  describes new features, bugs fixed, and known issues with the
  PathScale EKOPath Compiler Suite. Where possible, we provide workarounds
  for known problems.

Support & contact information
-----------------------------
  To report bugs, or for more information, send an email message to
  support@pathscale.com.
  
  Please report problems the first time you encounter them, even if
  they are listed here as known issues. Knowing who has encountered a
  bug helps us prioritize the bugs we know about.

New Features in 2.1
-------------------
* OpenMP 2.0 support:
   + The C compiler now supports OpenMP 2.0
   * The C++ compiler has limited support for OpenMP 2.0
   + Improved performance for all OpenMP applications, especially ones
     with fine-grained parallelism
* Use of system headers and libraries
* Numerous performance improvements including improved scalar and vector
  math library routines.
* Improvements to the C++ frontends to support GCC 3.4 builtins and 
  attributes.
* New options to help identify uninitialized variables:
    -trapuv
    -Wuninitialized
  New option to set uninitialized variables to zero (slight performance 
  impact): 
    -zerouv
* The 2.1 release has been tested on the following Linux distributions:
    RedHat Fedora Core 2
    RedHat Fedora Core 3
    RedHat Enterprise Linux 3
    RedHat Enterprise Linux 4       **NEW**
    SuSE Linux Enterprise Server 8
    SuSE Linux Enterprise Server 9
    SuSE Professional 9.1
    SuSE Professional 9.2
    
Fortran programs and stack size
-------------------------------
  The compiler normally allocates data for Fortran programs on the stack
  for best performance. Some Linux distributions limit the default stack
  size to a value low enough that many Fortran programs will crash
  immediately after they begin to run. The Fortran runtime will
  automatically attempt to work around these limits if it detects them.

Fortran Preprocessor default changed
------------------------------------
  In the 2.1 release, the default preprocessor used by Fortran for files
  that us .F, .F90, or .F95 extensions has now been changed to the C
  preprocessor, cpp, from the Fortran preprocessor, ftpp.

  The Fortran preprocessor can be invoked by using the option '-ftpp' 
  when compiling the code.

Use of system headers and libraries
-----------------------------------
  Past releases of the PathScale EKOPath Compiler Suite have provided a
  set of system libraries and headers.  Doing this has caused some users
  to experience problems.  Starting with this release, the compiler relies
  on the system's headers and libraries. 
  
  As a result, users will no longer be able to build 64-bit applications
  on systems that only have 32-bit development environments installed.

Known issues and work-arounds
=============================
OpenMP
------

  Functionality
  - - - - - - -
  The PathScale EKOpath Compiler Suite 2.1 introduces support for the 
  OpenMP 2.0 specification in Fortran, C, and C++.  The C++ OpenMP 
  support is limited and does not support OpenMP directives in C++ 
  source that use exceptions, classes or templates. (We have found some 
  codes with very simplistic use of classes may work.)

  The performance issue that existed in fine grained OpenMP codes in 
  EKOPath 2.0 has been resolved.

  Thread Stack Size
  - - - - - - - - -
  Typically the per-thread stack size limit is 2MB for 2.4.* kernels 
  using linuxthreads and 64MB for 2.6.* kernels using NPTL, but these 
  maximums may vary according to your Linux distribution. Please contact 
  your O/S vendor for specific details.

AMD Core Math Library
---------------------
  Although we test our compilers against the AMD Core Math Library
  (ACML), there are a few minor differences in output between LAPACK
  tests compiled wholly with our compilers and those linked against
  ACML.

Bugs fixed between 2.0 and 2.1:
-------------------------------
  [Bug 3073] Flag "-IPA:ctype" is unsafe
  [Bug 3152] Segmentation fault in Global Optimization
  [Bug 3533] compiler optimizes away objects even at -O0
  [Bug 4145] pathf90: execution returns incorrect results unless compiled with -LNO:opt=0
  [Bug 4328] C/C++: The compiler may generate incorrect DWARF/debug info for switch stmts
  [Bug 4574] libopenmp should keep a local heap of threads
  [Bug 4602] Fortran: The %VAL extension is not fully implemented
  [Bug 4725] __offsetof__ is unsupported.
  [Bug 4750] C++: gcc __attribute__ extension not supprted with namespaces
  [Bug 4818] C/C++ compilers may abort when using -ipa if a static library is the first file
  [Bug 4865] Fortran: Problem with return value initialization in derived types
  [Bug 4867] Fortran: Compiler does not terminate when INDEX is passed an array constructor
  [Bug 4895] pathf90: Segmentation fault!  Fault address: (nil)
  [Bug 4897] pathf90: Executable file created erroneously
  [Bug 4910] Application may hang if multiple OpenMP order blocks occur within in a single loop.
  [Bug 5024] Run fails with output mismatch
  [Bug 5076] OpenMP library hangs with guided scheduling
  [Bug 5084] Fortran 90 pack() and merge() functions with double-precision complex types
  [Bug 5138] Compiler segfaults when compiling OpenMP code
  [Bug 5149] OpenMP application breaks with -O3
  [Bug 5150] OMP-C benchmark fails when run with -O3 or greater and 2 threads
  [Bug 5159] Backend crashes compiling file with -Ofast
  [Bug 5160] Application hangs when compiled with -mp
  [Bug 5164] pathf90: file doesn't compile -O3
  [Bug 5176] pathf90 - Segmentation fault in CGLOOP phase
  [Bug 5185] pathf90 - inaccurate results when compiled at -O2 and -Ofast on molecular dynamics code
  [Bug 5206] Misplacement of hand inserted barrier pragma in NPB2.3-OMP-C CG
  [Bug 5224] pathcc - sign extensions not propagated
  [Bug 5232] OMP_GET_WTICK is inaccurate and not stable
  [Bug 5240] pathf90 - Bounds too complicated for scalar expansion
  [Bug 5271] DWARF: common block information doesn't scope
  [Bug 5273] pathcc - Floating point exception in LNO Initialization phase
  [Bug 5294] SIMD: unrolled copies in a CVT operation inside a vectorized loop should be aligned appropriately
  [Bug 5295] pathf90 - issue with numeric initialization of CHARACTER  - can't handle data statement with Z-format
  [Bug 5296] pathf90: incorrect runtime results at -O3; passes -O3 -LNO:simd=0
  [Bug 5357] compiler emits broken .eh_frame info
  [Bug 5363] pathcc - Compiler Error: incorrect register class for result 0
  [Bug 5367] pathf90: unexpected syntax error when -g -O2 -cpp
  [Bug 5389] libopenmp hang with ORDERED loops and non 32-bit loop bounds
  [Bug 5398] The "-C" option generates spurious warnings when the low bound of an array is
  [Bug 5411] pathf90 - PSC 2.1 slow on  single precision loops with INT and REAL type conversions
  [Bug 5431] Compiler crashes if actual argument is an array section of a function result
  [Bug 5446] pathf90: compiler seg faults at -O3 or higher
  [Bug 5459] OpenMP test fatal error when OMP_NUM_THREADS=1
  [Bug 5464] Fault address is below the first valid mapping boundary
  [Bug 5466] Driver does not pass correct target to back-end phase after ipa
  [Bug 5473] pathf90: Segmentation fault in phase MP Lowering when -g
  [Bug 5478] test fails at -O2 -ipa and above
  [Bug 5480] Using -OPT:fast_sqrt=on causes compiler to assert
  [Bug 5491] several tests pass with -OPT:early_mp=on; fail without the flag
  [Bug 5503] incorrect bitwise operation rearrangement
  [Bug 5510] Invalid syntax in the FOR statement
  [Bug 5512] test fails with OMP_NESTED=TRUE
  [Bug 5516] C++: Runtime failure at -O0 -mp
  [Bug 5520] Compile time error in Converting x87 stack registers phase
  [Bug 5532] Compiler Error during Writing WHIRL file phase
  [Bug 5540] ipa_link died due to signal 11 when -Ofast
  [Bug 5541] Incorrect compiler-generated __ompc_serialized_* calls
  [Bug 5542] Segmentation fault in Assembly phase.
  [Bug 5545] pathf90 does not look in "/usr/include" by default
  [Bug 5546] need gcc3.4 builtins
  [Bug 5548] ### Unhandled loop upperbound in loop unswitch.
  [Bug 5550] fortran: end interface boo-boo for operator =
  [Bug 5575] Application fails to build with pathcc
  [Bug 5578] Revise -fexception and -funwind-tables flags in the driver
  [Bug 5585] Fortran serial stack sizing is too greedy on SMP with OpenMP
  [Bug 5599] Compiling mpich based application with -ipa causes ipa_link error.
  [Bug 5600] Compiler seg faults in backend while compiling library
  [Bug 5622] Incorrect inline assembly code generated for xadd
  [Bug 5635] pathcc - at -O3 -finline Compiler Error: WFE_Expand_Expr: not implemented file_stmt
  [Bug 5646] compile time seg fault in C++ frontend
  [Bug 5651] pathf90  customer code gives wrong answers at -O3, executes correctly at -O2
  [Bug 5658] compile-time segmentation fault with -g
  [Bug 5663] Vectorization of simple for loops with expressions using backwards running index
  [Bug 5664] ERROR at  CHAR test-3 when -m32 -O2 and above
  [Bug 5676] pathf90 - MIN MAX loops not vectorized with eko, while vectorized with Intel
  [Bug 5678] runtime correctness problem at -O3
  [Bug 5694] ### Create_TY_For_Tree: type_size NULL for non ARRAY/RECORD/VOID, type is 196
  [Bug 5699] ### Expand_Reduce_Max: Unsupported opcode (OPC_I4V16I4REDUCE_MAX)
  [Bug 5703] ### lowering of do loop test generated statements
  [Bug 1004] Fortran: Euroben dot product kernels give incorrect results
  [Bug 5720] -ffast-math should pass -OPT:fast_math to the back-end
  [Bug 5721] Segmentation fault in Writing WHIRL file phase.
  [Bug 5744] grid_MPI code assert failure in CG at -O2
  [Bug 5756] intermittent fatal error: unknown dynamic scheduling in
  [Bug 5762] Segmentation fault in Global Optimization phase
  [Bug 5767] MPlower: malformed limit test in MP processing
  [Bug 5775] pathf90 - when compiled at -O3 Segmentation fault in Global Optimization -- Create MU and CHI list phase.
  [Bug 5782] Atomic pragma inside template function is broken
  [Bug 5783] Use of template function parameter in openmp pragma causes compile-time error
  [Bug 5785] option -march=auto returns an error when model name is unknown in /proc/cpuinfo
  [Bug 5798] pathf90 - compilation fails at -O2 or higher  with NYI: Pick_Store_Instruction mtype
  [Bug 5804] test fails with -O2 -ipa and above
  [Bug 5805] pathf90 - status of fgetc should return an EOF
  [Bug 5835] O3 LNO compile time error
  [Bug 5935] Compiler Error in file during Code_Expansion phase: Unimplemented flop: OPC_F8RSQRT
  [Bug 5967] pathCC on systems with GCC3.4:  Known issue with feedback compilation.
  [Bug 6000] IPA linker calls gcc wrapper recursively
  [Bug 6022] assert error writing whirl 
  [Bug 6026] option -Wuninitialized is ignored when compiling fortran code
  [Bug 6027] -trapuv not effective when not compiled at -O0
  [Bug 6028] -zerouv initializes with NaN instead of zero
  [Bug 6098] gfec aborts with segv while compiling in -m32
  [Bug 6162] pathcc -O3 : Compiler Error Code_Expansion phase: ### don't know how to make dedicated TN for class (null)
  [Bug 6176] pathf90 - min and minval returns incorrect values with -O3
  [Bug 6189] Automatically dump preprocessed source when compiler ICEs