sp-announcements mailing list archive
Index Fortran compiler to be upgraded on Seaborg on 9/28/04

From: Mike Stewart (pmstewart_at_lbl_dot_gov)
Date: 09/21/2004

  • Next message: Mike Stewart: "Totalview on Seaborg upgraded 10/13/04 to version 6.5.0-2"
    The default version of the IBM xlf Fortran compiler on seaborg.nersc.gov 
    will be upgraded to version 8.1.1.6 on Tuesday, 9/28/04.  This version 
    contains fixes to several compiler bugs reported by NERSC to IBM as well 
    as some other minor changes and new features. The attached README 
    documents the changes and new features in this release.
                                                                                    
    
    This new version is currently contained in the xlf module.  To access 
    it, type in:
                                                                                    
    
       module load xlf
    
    -- 
    =========================
    Michael Stewart
    Consultant
    NERSC User Services Group
    510-486-6648
    pmstewart_at_lbl_dot_gov
    =========================
    
    
    * @(#) 01 1.2.11.38 6/3/02 22:26:48
    *
    * COMPONENT_NAME: (Fortran) AIX XL Fortran Compiler
    *
    * FUNCTIONS: XLF README file
    *
    * ORIGINS: 27
    *
    * 5765-F70 (C) COPYRIGHT International Business Machines Corp. 1990, 2002
    * All Rights Reserved
    * Licensed Materials - Property of IBM
    *
    * US Government Users Restricted Rights - Use, duplication or
    * disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
    * IBM, AIXwindows, RS/6000, PowerPC, POWER2, POWER3, POWER4 and AIX are
    * trademarks of IBM Corp. in the U.S and/or other countries.
    *
    * Portions of this document may have been derived from the Information
    * technology - Programming languages - Fortran - Part 1: Base
    * language, ISO/IEC 1539-1:1997. This document uses the standard's
    * informal name, Fortran 95.
    
    This document contains the following sections:
    
    I.	Language Reference Errata (version 8.1)
    II.	Fortran 95 Standard Interpretations
    III.	User's Guide Errata (version 8.1)
    
    
    I. Language Reference Errata
    ============================
    
    The following corrections and additions apply to the published version of the
    XL Fortran for AIX Language Reference, version 8.1:
    
    Addition to Storage Class Assignment
    ------------------------------------
    
    Chapter 3: Data Types and Data Objects
    
    In the "Storage Class Assignment" section, the last paragraph under the heading
    "Explicitly", now reads as follows:
    
    	A variable that does not satisfy any of the above, and is not
    	equivalenced with a variable that has an explicit storage class, has an
    	explicit storage class of static if:
    		- A SAVE statement with no list exists in the scoping unit, or
    		- The variable is declared in the specification part of a main
    		  program.
    
    Clarification of TARGET
    -----------------------
    
    Chapter 10: Statements
    
    The following changes have been made to the documentation for the TARGET 
    statement:
    
    	Purpose:
    		Data objects with the TARGET attribute can be associated with 
    		pointers.
    
    In the Rules section, the first rule has been replaced by the following:
    
    	If a data object has the TARGET attribute, then all of the data 
    	object's nonpointer subobjects will also have the TARGET attribute.
    	
    	A data object that does not have the TARGET attribute cannot be 
    	associated with an accessible pointer.
    
    	
    Clarification of COS(X), EXP(X), and SIN(X)
    -------------------------------------------
    
    Chapter 12: Intrinsic Procedures
    
    COS(X)
    
    	Result Value
    		If X is of type complex, the real and imaginary parts of X
    	        are regarded as values in radians.
    
    EXP(X)
    
    	Result Value
    		If X is of type complex, its real and imaginary parts are
    	        regarded as values in radians.
    
    SIN(X)
    
    	X
    		must be of type real or complex. If X is real, it is regarded
    		as a value in radians. If X is complex, its real and imaginary
    		parts are regarded as values in radians.
    
    
    Clarification of PACK(ARRAY, MASK, VECTOR)
    ------------------------------------------
    
    Chapter 12: Intrinsic Procedures
    
    The description of the VECTOR argument for the PACK intrinsic now reads as
    follows:
    	
    	VECTOR (optional)
    
    		is a padding array whose elements are used to fill out the
    		result if there are not enough elements selected by the mask.
    		It is a one-dimensional array that has the same data type and
    		type parameter as ARRAY and at least as many elements as there
    		are true values in MASK. If MASK is a scalar with a value of
    		.TRUE., VECTOR must have at least as many elements as there are
    		array elements in ARRAY.
    
    Changed Examples for gmtime_ and ltime_
    ---------------------------------------
    
    
    Chapter 14: Service and Utility Procedures
    
    The examples for the following procedures have been corrected:
    
    gmtime_
    
    	INTEGER(KIND=TIME_SIZE) STIME
     	INTEGER(4) TARRAY(9)
     	CALL gmtime_(STIME, TARRAY)
     	
    ltime_
    
    	 INTEGER(KIND=TIME_SIZE) STIME
    	 INTEGER(4) TARRAY(9)
    	 CALL ltime_(STIME, TARRAY)
    	
    II. Fortran 95 Interpretations for XL Fortran for AIX
    =====================================================
    
    The following interpretations of the Fortran 95 standard apply to the
    XL Fortran for AIX Language Reference, version 8.1:
    
    Chapter 3: Data Types and Data Objects
    
    1. Under "Events Causing Undefinition", rule 14b now reads as follows:
    
    	A nonpointer dummy argument with INTENT(OUT) and its associated
    	actual argument are undefined, except for nonpointer direct components
    	that have default initialization.
    
    Chapter 4: Array Concepts
    
    2. The following restriction has been added to the "Implied-DO list for an
       Array Constructor":
    
    	You must not reference the value of an implied_do_variable in
    	the limit expressions expr1 or expr2.
    
    Chapter 5: Expressions and Assignment
    
    3. The following addition has been made in the section entitled "Pointer
       Assignment":
    
    	If the target of a pointer assignment is an allocatable object, it
    	must be allocated.
    
    Chapter 7: Program Units and Procedures
    
    4. Rule 1 of "Rules for Resolving Procedure References to Names" now reads as
       follows:
    	
    	If there is an interface block with that name in the scoping unit or
            accessible through use association, and the reference is consistent
            with a non-elemental reference to one of the specific interfaces
            of that interface block, the reference is to the specific procedure
            associated with the specific interface.
    
    5. Within the "Interface Blocks" section, the paragraph above the IBM Extension
       now reads as follows:
    
       	A procedure name used in a MODULE PROCEDURE statement must not have
       	been previously specified in any MODULE PROCEDURE statement in any
       	accessible interface block with the same generic identifier.
    
    Chapter 10: Statements
    
    6. The fourth paragraph in the "Rules" section for the "NAMELIST" statement now
       reads as follows:
    
       	Nname can be specified in more than one NAMELIST statement in the
       	scoping unit, and more than once in each NAMELIST statement. The
       	variable_name_list following each successive appearance of the same
       	Nname in a scoping unit is treated as the continuation of the list for
       	that Nname.
      	
    Chapter 12: Intrinsic Procedures
    
    7. The description of the MOLD argument for the TRANSFER intrinsic now reads as
       follows:
     	
     	is a data entity that has the type characteristics you want for the
     	result. If MOLD is a variable, the value does not need to be defined.
     	It may be of any type, and may be scalar or array valued. Its value is
     	not used, only its type characteristics.
     	
    III. User's Guide Errata
    ========================
    
    The following corrections and additions apply to the published version of the
    XL Fortran for AIX User's Guide, version 8.1:
    
    Chapter 4: Editing, Compiling, Linking, and Running XL Fortran Programs
    
    1. The section that describes the XLFRTEOPTS environment variable in the
       "Setting Run-Time Options" section is missing a definition for
       cpu_time_type. The cpu_time_type run-time option is defined as follows:
    
    	cpu_time_type={usertime | systime | alltime | total_usertime |
                       total_systime | total_alltime}
                                       -------------
    
    	Determines the measure of time returned by a call to CPU_TIME(TIME).
    
            The suboptions for cpu_time_type are as follows:
    
            usertime         Specifies that CPU_TIME(TIME) should return the user
                             time of a process. For a definition of user time, see
                             the AIX Performance and Tuning Guide.
    
            systime          Specifies that CPU_TIME(TIME) should return the system
                             time of a process. For a definition of system time,
                             see the AIX Performance and Tuning Guide.
    
            alltime          Specifies that CPU_TIME(TIME) should return the sum of
                             the user and system time of a process.
    
            total_usertime   Specifies that CPU_TIME(TIME) should return the total
                             user time of a process. The total user time is the
                             sum of the user time of a process and the total user
                             times of its child processes, if any.
    
            total_systime    Specifies that CPU_TIME(TIME) should return the total
                             system time of a process. The total system time is the
                             sum of the system time of the current process and the
                             total system times of its child processes, if any.
    
            total_alltime    Specifies that CPU_TIME(TIME) should return the total
                             user and system time of a process. The total
                             user and system time is the sum of the user and system
                             time of the current process and the total user and
                             system times of their child processes, if any.
    
                             This is the default measure of time for CPU_TIME if
                             you have not set the cpu_time_type run-time option.
                             
    2. In all sections concerning linking 32 and 64-bit SMP and non-SMP programs 
       using the ld command, the following bullet: 
    	-If you use the -qpdf1 option, specify -lpdf and 
    	 -L/usr/lpp/xlf/lib/pdf.
    
    is replaced by the following:
    	-If you use the -qpdf1 compiler option, specify -lxlopt. 
                    
    Chapter 5: Fortran Compiler-Option Reference
    
    3. In the description of the -d compiler option, and in the "Passing Fortran
       Files through the C Preprocessor" section in Chapter 4, the following
       sentence should be added:
       	
       	"When XL Fortran invokes cpp for a file, the preprocessor will emit
       	#line directives unless you also specify the -d option."
    
    4. The description of the -qfloat=fltint suboption, is incorrect.
       The following sentence and note:
    
       "Speeds up calculations more safely than the hsflt suboption, by
       rounding double-precision values only when they are stored into
       REAL(4) memory locations.
    
       Note: If a program converts a floating-point value that is outside the
             representable range of integers, it produces undefined results
             because the error condition is not detected."
    
       should be replaced with this description:
    
       "Speeds up floating-point-to-integer conversions by using an
       inline sequence of code instead of a call to a library function.
    
       The library function, which is called by default if -qfloat=fltint is not
       specified or implied by another option, checks for floating-point values
       outside the representable range of integers and returns the minimum or
       maximum representable integer if passed an out-of-range floating-point
       value.
    
       The Fortran language does not require checking for floating-point values
       outside the representable range of integers.  In order to improve
       efficiency, the inline sequence used by -qfloat=fltint does not perform this
       check.  If passed a value that is out of range, the inline sequence will
       produce undefined results."
    

  • Next message: Mike Stewart: "Totalview on Seaborg upgraded 10/13/04 to version 6.5.0-2"