Go to main content
Oracle® Developer Studio 12.5: Fortran User's Guide

Exit Print View

Updated: June 2016
 
 

5.2 Oracle Solaris Studio 12.4 Fortran Release

The Oracle Solaris Studio Fortran 95 compiler version 8.7 is a component of the Oracle Solaris Studio 12.4 release.

  • New -xarch, -xchip, and -xtarget values for Intel Ivy Bridge processor on x86.

  • New -xarch, -xchip, and -xtarget values for SPARC T5, M5, M6, and M10+ processors.

  • Support for Ivy Bridge assembler instructions.

  • Support for Ivy Bridge intrinsic functions, which can be found in solstudio-install-dir/lib/compilers/include/cc/immintrin.h.

  • Default value for -xarch=generic set to sse2 for -m32 on x86.

  • Support for -xlinkopt on x86. Inter-module, inter-procedural code ordering optimizations for large enterprise applications tuned for modern Intel processors. An up to 5% performance boost over a fully optimized binary can be seen for large applications.

  • Enhanced -xs option to control the trade-off of executable size versus the need to retain object files in order to debug.

  • Support for -xanalyze and -xannotate on Linux.

  • Support for -fopenmp as a synonym for -xopenmp=parallel.

  • Compile time for applications using modules is substantially improved and memory overflows due to module processing are eliminated.

  • !$pragma ident can be used in a source file to identify the source version of the compiled object.

    The format for f90 source files is:

    !$pragma ident "$Id: <Identification String> $"

    Note that the spaces before and after <Identification String> are needed.

    For example:

    !$PRAGMA IDENT "$Id: Identification String $"
    program foobar
       character (LEN=120) :: versionid
       parameter (versionid = "$Id: string $")
       character*120 v2
       data v2/"$Id$"/
       print *,"hello world",versionid,v2
    end program

    On Linux platforms, the identification string can be displayed using the ident command. On Oracle Solaris, the command mcs –p can be used.

    Alternatively, for source files that already contain the identification strings as parameter constants like versionid in the example above, the following command can be used to turn the value of the versionid parameter constant into an identification string.

    –qoption f90comp –ident=versionid
  • Support for a deferred type parameter (colon) as the LEN type parameter in a character type used in a declaration. For example:

    character(LEN=:), pointer :: str
  • Support for procedure pointer.

  • Support for the C_F_PROCPOINTER function in the Fortran 2003 standard for the ISO_C_BINDING module. The C_FUNLOC function is extended to allow procedure pointer as argument.

  • Support for the Fortran 2003 feature for ABSTRACT interface.

  • Full support for object-oriented Fortran. Typebound procedures with the GENERIC, DEFERRED, NON_OVERRIDABLE, PASS, and NOPASS attributes are now allowed.

  • Support for the Fortran 2003 feature to enable derived type and generic function to have the same name.

  • Support for the Fortran 2008 feature to enable passing TARGET objects to INTENT(IN) pointer dummies.

  • Support for the Fortran 2003 feature to allow finalizing routines in derived types.

  • New compiler options:

    • -fma enables automatic generation of floating-point fused multiply-add instructions.

    • -fserialio specifies that the program does not perform I/O in more than one thread at a time.

    • (x86) -preserve_argvalues saves copies of register-based function arguments in the stack.

    • -xdebuginfo controls how much debugging and observability information is emitted.

    • -xglobalize controls globalization of file static variables but not functions.

    • -xinline_param allows for changing the heuristics used by the compiler for deciding when to inline a function call.

    • -xinline_report generates a report written to standard output on the inlining of functions by the compiler.

    • -xipo_build reduces compile time by avoiding optimizations during the initial pass through the compiler, optimizing only at link time.

    • -xkeep_unref keeps definitions of unreferenced functions and variables.

    • -keepmod retains a module which is not changed when compiled. The default is -xkeepmod=yes, which replaces the old behavior when a new module file is created each time even without any changes from the previous compilation.

    • -xM generates makefile dependency automatically. In conjunction with the new -keepmod=yes option, it allows the most optimal incremental build on Fortran application using modules.

    • -xpatchpadding reserves an area of memory before the start of each function.

    • (Oracle Solaris) -xsegment_align causes the driver to include a special mapfile on the link line.

    • -xthroughput indicates that the application will be run in situations where many processes are simultaneously running on the system.

    • -xunboundsym specifies whether the program contains references to dynamically bound symbols.

  • The libraries libfmaxlai, libfmaxvai, libfminlai, libfminvai, libfprodai and libfsumai on SPARC platform have not been used by the Studio Fortran compilers since the Sun Studio 10 release in 2005.

    These libraries will be removed in a future release. At that point, object files and executables produced by Studio compilers earlier than the Sun Studio 10 release can no longer be used and must be recompiled with newer Studio compilers. If you have old object files and executables that require any of these libraries and recompiling is not feasible, you should keep the old compiler installation or copy the specific libraries you need from the old compiler installation into the new compiler installation.