CM Fortran Version 2.1.1 Bug Update Report for December 1993 For Connection Machine CM-5 Systems FIXED BUGS The following bugs have been fixed in the current release, Version 2.1.1. For a description of any bug listed here, contact your Applications Engineer or the Customer Support group at Thinking Machines Corporation. TMCaa02183 Variable named "command" may cause compilation problems. TMCaa02259 Nested DO loops problem with optimizer. TMCaa02268 FORALL processing may generate DTBRTS-VIOLATION. TMCaa02316 ENTRY statement problem TMCaa02336 Character merge in print creates too large data segment TMCaa02355 Logical MERGE gets statement syntax error. TMCaa02359 PACK without VECTOR argument, passed to an intrinsic TMCaa02379 Concatenation of character substrings may fail at run time TMCaa02380 FORALL produces wrong answers. TMCaa02417 No LAYOUT directive for array-valued function results TMCaa02454 Wrong array home assumed for arrayvalued function result TMCaa02574 ENTRY statments with assumed arrays get seg violation TMCaa02621 CMF_random doesn't support complex data type TMCaa02673 Invalid REPLICATE gets segmentation violation. TMCaa02716 String concatenation of character*(*) incorrect TMCaa02720 Bad code generated for integer divide by large power of two TMCaa02727 NaN checking of single precision complex may fail. TMCaa02751 Repeat count in array constructor doesn't work. TMCaa02757 Optimizer failure when index defined with variable. TMCaa02765 Can't have RECL=65536 for direct unformatted I/O. TMCaa02768 Corrupted data when reading from front end to serial axis. TMCaa02779 NaN checking improperly implemented for array sections TMCaa02795 Compiling with -list breaks with over 19 include files TMCaa02806 READ from file into array section may corrupt other data. TMCaa02813 Parentheses around character expression causes problems TMCaa02820 SPREAD intrinsic fails with array constructor argument TMCaa02822 UNPACK fails for serial array section [-slice and -cm5] TMCaa02835 -O switch restricted for assumed-size character strings TMCaa02846 Incorrect answer on some subtractions of array sections TMCaa02852 ASSERTION VIOLATION with mod expression. TMCaa02861 WHERE ignored on assignment with RESHAPE TMCaa02870 Aligned serial axes don't quite work. TMCaa02871 Problem compiling with -safety TMCaa02874 Incorrect results when re-assigning dynamically sized array TMCaa02881 Incorrect use of array functions cause ASSERTION VIOLATION. TMCaa02888 Assertion error when using -O. TMCaa02889 Illegal SPARC register emitted in PE assembler code. TMCaa02890 CMF_RANK gives incorrect result with mask. TMCaa02892 Compiler aborts at scalar reference into assume-shape array TMCaa02893 CMCOM_cross_geometry_move may fail. TMCaa02902 FORALL does not work with :serial arrays under mask. TMCaa02903 MATMUL ignores WHERE mask on assignment TMCaa02905 FORALL gather with -slice generates bad send/get address. TMCaa02907 RESHAPE gets segmentation fault TMCaa02908 Character*(*) function is not checking length. TMCaa02911 Assertion error building canonical location. TMCaa02920 An UNPACK of a PACK causes an internal compiler error. TMCaa02925 -O & UNPACK can cause the compiler to fail. TMCaa02926 Forall creating a get fails in cmf with vector units TMCaa02933 Spread of allocatable array causes compiler failure. TMCaa02981 Too many character arguments cause register corruption TMCaa03091 Problem with CM arrays if scalars defined in unnamed common TMCaa03100 POPCOUNT sometimes gives wrong answer TMCaa03103 MAXVAL followed by the use of its result in a subroutine TMCaa03133 The optimizer may omit character comparisons. TMCaa03143 Incorrect stabs emitted for common subexpressions TMCaa03146 Prism does not display the correct results for allocatable arrays. TMCaa03191 Serial order IO, complex data, on CM2 & CM5 TMCaa03215 During output redirection in shell, output file is truncated TMCaa03254 negative complex variables can give erroneous results TMCaa03279 WHERE often fails with -O switch serial axis and CSHIFT TMCaa03301 -pg switch gives undef symbol mcount when compiled TMCaa03302 CMSSL does not link correctly if in non-standard location TMCaa03310 Interface block causes unnecessary copyin/out for allocatable arrays, TMCaa03313 CSHIFT when used with allocatable arrays on CM5 causes a compiler crash TMCaa03317 mult-add operation fails at compile-time with instruction error TMCaa03372 Array sections with multiplication by 0.0 returns TMCaa03556 Using the vector units -vu with masked where caused compiler crash TMCaa03706 2 Foralls die at compile when triplet subscript used in 2ND TMCaa03785 EOSHIFT with 64 bit integers causes compiler crash TMCaa03824 nullname TMCaa03857 Redirected I/O with CMF_describe_array doesn't work correctly TMCaa03884 Forall with non conformable arrays and -safety=10 TMCaa03901 -O & safety=10 cause compiler abort TMCaa03926 Real intrinsic with safety=10 causes compiler crash TMCaa03968 Using -pg causes link error (undefined symbols) if code calls CMF IO utilities TMCaa04001 -safety causes code generation error in READ statement ERR= TMCaa04007 CMF_aref_1d with -noaxisreorder returns erroneous results TMCaa04019 extend_source sometimes causes internal error TMCaa04028 -serialdimensions & -axisreorder break FORALL TMCaa04054 Implied do loop read corrupted data TMCaa04086 .FCM files with include files may crash compiled w/-list TMCaa04186 vector valued subscript wrong on allocatable non-one based arrays TMCaa04227 Forall with EOSHIFT fails at compile time TMCaa04235 Forall with SERIAL axis fail at compile TMCaa04275 leadz(power(30)) returns incorrect answer TMCaa04343 Illegal code (ALLOCATing front end array) gets error TMCaa04355 SPREAD included in SUM causes compiler error TMCaa04442 symbolic type name appended to literal causes compiler error OUTSTANDING BUGS The following bugs are outstanding in the current release. TMCaa01947 Very long compile times for large basic blocks TMCaa02210 OPEN statement has wrong default for BLANK= specifier [VAX] TMCaa02241 Printing zero sized spread fails. TMCaa02274 Build allocates mask of the WHERE in CANONICAL location TMCaa02351 Automatic array dimensioned by COMMON array element TMCaa02446 Multiple entries: dummy args in different order unsupported TMCaa02452 Argument checking problem for alternate return arguments. TMCaa02605 Character CASE construct not yet supported. TMCaa02625 Optimizer produces erroneous results TMCaa02641 Compiler ignores DUBOUND (-slice and -paris) TMCaa02657 Mold argument to RESHAPE cannot be an expression. TMCaa02658 Mold RESHAPE argument can not be FE array. TMCaa02719 Can't set breakpoint on unlabelled ENDDO. TMCaa02764 Compiler doesn't flag mismatched arguments with -safety TMCaa02771 Incorrect use of statement functions cause assertion error TMCaa02784 SEMANTICS phase allows labels on ELSEWHERE part of WHERE. TMCaa02785 Scalar ISHFT does not work when shift amount is 32 or -32. TMCaa02789 Invalid character array reference gets DTBRTS violation. TMCaa02801 Compile error on substring with upper bound unspecified. TMCaa02809 FORMAT reversion doesn't work on SUN. TMCaa02814 Multiple definitions of blank common cause run-time error TMCaa02816 Bad error message for self-interface blocks in local array. TMCaa02817 Compile-time error using REAL intrinsic TMCaa02833 PACK intrinsic doesn't work with dummy array arguments TMCaa02834 Passing character strings between Sun F77 and CM Fortran TMCaa02838 Array constructors restricted for DATA attribute. TMCaa02841 arg_checking broken for case with many pass thru arguments. TMCaa02844 -double_precision switch problem with CMPLX. TMCaa02864 Array constructor ignores array stride. TMCaa02876 Sum of zero sized arrays not working. TMCaa02877 Some assigned GOTOS cause undefined symbols at link time. TMCaa03113 Non-conformable expressions in WHERE cause compiler to fail. TMCaa03114 -safety=10 & automatic arrays can cause compiler failure TMCaa03186 High subroutine call overhead on VU system TMCaa03311 STAT= not implemented for ALLOCATE/DEALLOCATE TMCaa03856 Multiple entries and assumed layout arrays TMCaa04123 copy propagation takes forever with CMF 2.1 Beta 1 TMCaa04213 Triplet notation shifts with serial axis fail at compile TMCaa04250 Adding constant to allocatable arrays has poor performance TMCaa04277 Where fails with compiler error when using safety=10 TMCaa04374 PACK() garbage mask memory leak TMCaa04402 pdesc qualifier in directive can cause compiler to fail TMCaa04429 CMF2.1 compile problems with single precision in daps Each of these bugs is detailed below. ********************************************************* ID: TMCaa01947 Title: Very long compile times for large basic blocks Description: Users may experience very long compile times for modules which contain a long sequence of assignment expressions uninterrupted by control flow expressions. Workaround: Insert a trivial control flow expression. For instance, if (cond) goto 100 where cond has a runtime value of .false. (that is, not a compile-time constant). The goto will never be executed, but the if statement will force the compiler to start a new basic block. Status: Outstanding. ********************************************************* ID: TMCaa02210 Title: OPEN statement has wrong default for BLANK= specifier [VAX] Description: The BLANK= specifier of the OPEN statement should default to a value of NULL if the specifier is omitted; it incorrectly defaults to ZERO. Workaround: specifier of BLANK='NULL'. Status: Outstanding. ********************************************************* ID: TMCaa02241 Title: Printing zero sized spread fails. Description: Printing zero SIZED spread results in generation of garbage before stopping with a segmentation violation error. Workaround: Use non-negative NCOPIES argument. Status: Outstanding. ********************************************************* ID: TMCaa02274 Title: Build allocates mask of the WHERE in CANONICAL location Description: BUILD allocates the mask of the WHERE statement in a canonical location. The result of the CSHIFT is always an array in a non-canonical layout. The mask of the WHERE should also be in a non-canonical layout. The following is an example: PROGRAM BUG456 IMPLICIT NONE INTEGER NODE, NDIM PARAMETER(NDIM=252) DIMENSION NODE(NDIM,NDIM) CMF$ LAYOUT NODE(1:NEWS,2:NEWS) WHERE(1.EQ.CSHIFT(NODE,1,+1)) NODE=NODE+1 ENDWHERE print *,'done' END Workaround: Allocate a LOGICAL with the same layout as the ARRAY inside the WHERE block. Compute the mask into that LOGICAL and then use it as the mask. Status: Outstanding. ********************************************************* ID: TMCaa02351 Title: Automatic array dimensioned by COMMON array element Description: When an automatic array is dimensioned by a COMMON array element, the compiler may abort with a DTBRS violation. Workaround: Use a common scalar. Status: Outstanding. ********************************************************* ID: TMCaa02446 Title: Multiple entries: dummy args in different order unsupported Description: A dummy argument appearing in an ENTRY statement must appear in the same relative position in its argument list as an identically named dummy argument of the containing procedure. A compiler error message is generated for the following procedure, since argument I violates this restriction. SUBROUTINE FOO(I,J) INTEGER I,J I = J RETURN ENTRY BAR(K,I) I = K END Status: Outstanding. ********************************************************* ID: TMCaa02452 Title: Argument checking problem for alternate return arguments. Description: The following code does not compile cleanly because the number of actual and dummy arguments differ. program middle111 call deal(*1,*2) print *,'normal' stop 1 print *,1 stop 2 print *,2 stop end subroutine deal(*,*) integer inp(10) inp = 0 if (sum(inp+1) .eq. 10) goto 20 return sum(inp+2) 20 return sum(inp+3) end Workaround: Don't use argument checking in this case. Status: Outstanding. ********************************************************* ID: TMCaa02605 Title: Character CASE construct not yet supported. Description: Character case construct is not supported: character a a='a' select case (a) case('a') print *,'got it' case default print *,'didnt get it' end select end Workaround: In this instance, wrap ichar around all of the characters in the CASE statement. Status: Outstanding. ********************************************************* ID: TMCaa02625 Title: Optimizer produces erroneous results Description: Using the optimizer produces a read file error when code is compiled with ERR and IOSTAT. Workaround: Omit the -O switch in this case. Status: Outstanding. ********************************************************* ID: TMCaa02641 Title: Compiler ignores DUBOUND (-slice and -paris) Description: On Sun/vax, the compiler ignores upper dimension bound of arrays that are all declared the same shape. This makes the assumed shape arrays very slow. Workaround: Pass shapes. Status: Outstanding. ********************************************************* ID: TMCaa02657 Title: Mold argument to RESHAPE cannot be an expression. Description: The mold argument to RESHAPE will not compile if it is an expression. integer a(2,3,2), b(2*3*2) cmf$layout a(:news,:news,:news),b(:news) a=1 b=reshape([11]+1,a) print *,b(1) end The code above leads to the compiler error message: Array section or array constructor is required. Workaround: Assign the expression to a temp array, then pass the temp to RESHAPE. Status: Outstanding. ********************************************************* ID: TMCaa02658 Title: Mold RESHAPE argument can not be FE array. Description: RESHAPE requires the mold argument to be a CM-based array. If you attempt to hand reshape a FE array for mold it gives the following: *** FATAL ERROR: in
in file reshape2.fcm in phase BUILD Front-end array (BS) used in vector context.. Workaround: Use CM array. Status: Outstanding. ********************************************************* ID: TMCaa02719 Title: Can't set breakpoint on unlabelled ENDDO. Description: A breakpoint can not be set on an ENDDO that doesn't have a label. The debugger says there is no executable code on that line: program test integer a(3,4) do j = 1,4 do 100,i = 1,3 a(i,j) = i + j 100 enddo enddo print *,a end Status: Outstanding. ********************************************************* ID: TMCaa02764 Title: Compiler doesn't flag mismatched arguments with -safety Description: The compiler fails to check for mismatched arguments. For example, the following code compiles even though a subroutine that expects a 3-dimensional array is called with a 1-dimensional array. When such code is executed, a segmentation fault results. PROGRAM SEGFAULT INTEGER FOO(3) CALL FAULTSEG(FOO) END SUBROUTINE FAULTSEG(BAR INTEGER BAR(:,:,:) RETURN END Status: Outstanding. ********************************************************* ID: TMCaa02771 Title: Incorrect use of statement functions cause assertion error Description: Incorrect use of statement functions will cause assertion errors as in: implicit none integer n parameter (n=10) real main(n), u(n) real qf, x QF(X)=-1.0/(X*X) main=0.0 u=0.0 u = [1:n] main=-2.0+qf(u) end *** ASSERTION ERROR: in phase CODEGENERATION SrcPosn: 56: Unmatched node/context pair (TIMES-F76/SC_Reg). Workaround: Use array returning functions. Status: Outstanding. ********************************************************* ID: TMCaa02784 Title: SEMANTICS phase allows labels on ELSEWHERE part of WHERE. Description: The SEMANTICS phase allows labels on the ELSEWHERE part of a WHERE statement. This error (it is not part of the standard) causes the compiler to abort in subsequent phases: BUILD 6: a = 2.0 ^ *** ASSERTION ERROR: in X in file x.fcm in phase BUILD bld_as_bl_stmt called inappropriately. [ Aborting due to severe error. ] Workaround: Do not put labels on the ELSEWHERE part of WHERE. Status: Outstanding. ********************************************************* ID: TMCaa02785 Title: Scalar ISHFT does not work when shift amount is 32 or -32. Description: ISHFT of 32 or -32 behaves as an ISHFT of 0. Status: Outstanding. ********************************************************* ID: TMCaa02789 Title: Invalid character array reference gets DTBRTS violation. Description: The following code gets a DTBRTS violation when compiled: call printit ("uin") end subroutine printit(string) character*3 string character*8 direction character*9 inclusion character*7 segment if (string(1).eq."u") then direction="upward" else direction="downward" endif if (string(2).eq."i") then inclusion="inclusive" else inclusion="exclusive" endif if (string(3).eq."n") then segment="none" else if (string(3).eq."s") then segment="segment" else segment="start" endif print *,"" print *,direction // " " // inclusion // " " // segment end *** DTBRTS-VIOLATION-1 get_fcsym_sym: obj not a FCsym (FC1-4) Workaround: change string(x) to string(x:x) Status: Outstanding. ********************************************************* ID: TMCaa02801 Title: Compile error on substring with upper bound unspecified. Description: If the upper bound of a substring expression within a character string is unspecified the compiler interprets the expression as an array of characters, not as a character string. This causes a DTBRTS-VIOLATION at compilation. Workaround: To reference a character substring, specify both the lower and upper bound. For example, if you wish to reference a single-character substring use: ityp=cmsgin(1:1) Status: Outstanding. ********************************************************* ID: TMCaa02809 Title: FORMAT reversion doesn't work on SUN. Description: FORMAT doesn't handle embedded end-of-records properly. The data in the second part of each record is omitted in the code below: do i = 1,nsect if (xl1(i) .ne. check_xl1(i)) then print *, 'xl1 failed, iteration',i,xl1(i),check_xl1(i) stop endif enddo 21 FORMAT(10(F7.2,1X)) print *,'done' end Workaround: Avoid end-of-records Status: Outstanding. ********************************************************* ID: TMCaa02814 Title: Multiple definitions of blank common cause run-time error Description: Sun and CM-5: If there are two definitions of blank common, the latter is taken as a redefinition. This can lead to a segmentation fault if the second definition is smaller than the first. Workaround: Use consistent definitions. Status: Outstanding. ********************************************************* ID: TMCaa02816 Title: Bad error message for self-interface blocks in local array. Description: Self-interface blocks for routines whose arguments are used in declarations of local arrays give incorrect error messages. For example, this error message *** ERROR: in GEN on line 60 in bug00999.fcm Attributes of an 'interface self' arg differ from the 'self' arg [IMAX]. results from this code: subroutine gen(imax) integer imax interface subroutine gen(imax) integer imax end interface real y(imax) y = 5.0 print *, y end program bar interface subroutine gen(imax) integer imax end interface call gen(3) end Workaround: Either don't use self interface blocks or declare the local array (which uses a dummy arg) in the interface block also. For example: interface subroutine gen(imax) integer imax real y(imax) end interface Status: Outstanding. ********************************************************* ID: TMCaa02817 Title: Compile-time error using REAL intrinsic Description: Compile-time error occurs from using the REAL intrinsic within an expression on a DOUBLE COMPLEX data type that is being assigned to a DOUBLE PRECISION type [Slice and CM-5] The compiler fails to promote the REAL output to double-precision real unless a double-precision MOLD argument is supplied. Workaround: Use MOLD argument in the REAL intrinsic to cast the result of the real to a double precision type. Status: Outstanding. ********************************************************* ID: TMCaa02833 Title: PACK intrinsic doesn't work with dummy array arguments Description: PACK returns the correct answer only if the array arguments are copied into local arrays first and then these local arrays are passed to the PACK intrinsic. Workaround: To work around this problem, first copy array arguments into local arrays and then pass these local arrays to the PACK intrinsic. Status: Outstanding. ********************************************************* ID: TMCaa02834 Title: Passing character strings between Sun F77 and CM Fortran Description: Sun's f77 compiler and CM Fortran have incompatible calling conventions for functions returning character strings. Sun f77 passes/expects the address of the character string to be returned, the size of that character string, and finally the explicit arguments. CM Fortran, however, passes/expects only the address of the character string followed by the explicit arguments. In other words, CM Fortran does not pass the size of the character string. Workaround: A workaround exists if the caller is compiled with CMF and the callee is compiled with Sun f77: Just pass an additional argument specifying the length of the character string to be returned. For example in the main program below, change the call to the function as follows: tmp = i2lc(5,i) program test000 character label*30,i2lc*5,tmp*5 i=23 c function i2lc is defined in bug01017-sub.f tmp = i2lc(i) label='COOR.'//tmp print*,label end Status: Outstanding. ********************************************************* ID: TMCaa02838 Title: Array constructors restricted for DATA attribute. Description: If an array type declaration has a DATA attribute and if that array is initialized by an array constructor that uses a negated lower bound, then the array is initialized with the wrong data. Workaround: The workaround for this problem is not to use a negated lower bound. For example, the code below uses two parameters to avoid negation in the array constructor. parameter (ivelocity_max=2) parameter (ivelocity_min=-2) integer, array(ivelocity_min:ivelocity_max), data :: $ velocity = [ivelocity_min:ivelocity_max] Status: Outstanding. ********************************************************* ID: TMCaa02841 Title: arg_checking broken for case with many pass thru arguments. Description: The -arg_checking switch does not work in a case with many pass through arguments. The following error may result: *** RTS-FATAL-FE-TO-CM: A FE actual argument is being passed to a CM dummy. Workaround: Don't use -argument_checking, use fewer args, don't send both FE and CM args, don't do pass through, pass the non-array arguments first. Status: Outstanding. ********************************************************* ID: TMCaa02844 Title: -double_precision switch problem with CMPLX. Description: The result of the CMPLX intrinsic may be single precision when the -double_precision switch is given. The -double_precision switch fails to promote the single-precision result of the CMPLX intrinsic unless a double-precision MOLD argument is specified. Workaround: Use a mold argument to CMPLX. For example: x = cmplx(1.2345678901234567890d0,0.9876543210987654321d0, 0.) This mold value will then allow the code to work both with and without the -double_precision switch. Status: Outstanding. ********************************************************* ID: TMCaa02864 Title: Array constructor ignores array stride. Description: The output of the following program is incorrect because the array constructor is ignoring the array stride. integer a(1:100), b(1:100) a = -1 b = [1:100] a = [10[b(1:19:2)]] print "(5(1x,20I4,/))",a end Workaround: Assign to a temp, or use REPLICATE intrinsic. Status: Outstanding. ********************************************************* ID: TMCaa02876 Title: Sum of zero sized arrays not working. Description: The sum of a zero sized array does not give the correct answer. Workaround: Use an explicit if test. Status: Outstanding. ********************************************************* ID: TMCaa02877 Title: Some assigned GOTOS cause undefined symbols at link time. Description: Certain assigned GOTOs caused undefined symbols at link time. Workaround: Change the code to trick the compiler into thinking that all of the basic blocks may be accessed at runtime. For this code, just change the if (.true.) code to use a logical variable instead. subroutine bug logical l1 l1 = .TRUE. 100 CONTINUE ASSIGN 99774 TO I99926 GO TO 99926 99774 CONTINUE 99926 CONTINUE IF(l1) GOTO 100 GO TO I99926 END Status: Outstanding. ********************************************************* ID: TMCaa03113 Title: Non-conformable expressions in WHERE cause compiler to fail. Description: An array expression which is not conformable with the WHERE mask causes an INTERNAL COMPILER ERROR. Workaround: Make sure the arrays in the expression are conformable. Status: Outstanding. ********************************************************* ID: TMCaa03114 Title: -safety=10 & automatic arrays can cause compiler failure Description: If the bounds of automatic arrays are specified by different variables then -safety=10 can cause an INTERNAL COMPILER ERROR. Workaround: Don't use -safety=10. Status: Outstanding. ********************************************************* ID: TMCaa03186 Title: High subroutine call overhead on VU system Description: A subroutine which does no CM operations, will take about 20 times longer to execute when compiled with -vu than with -sparc. Status: Outstanding. ********************************************************* ID: TMCaa03311 Title: STAT= not implemented for ALLOCATE/DEALLOCATE Description: The STAT= part of the ALLOCATE & DEALLOCATE statements is not implemented, but the compliler does not warn about this. Workaround: Status: Outstanding. ********************************************************* ID: TMCaa03856 Title: Multiple entries and assumed layout arrays Description: An internal compiler error will occur if you operate on an assumed layout array after an entry statement. Workaround: Rewrite program to not use entry statements. Status: Outstanding. ********************************************************* ID: TMCaa04123 Title: copy propagation takes forever with CMF 2.1 Beta 1 Workaround: Use -nocprop to turn off constant propagation optimization. Status: Outstanding. ********************************************************* ID: TMCaa04213 Title: Triplet notation shifts with serial axis fail at compile Description: Triplet notation shifts with serial axis fail at compile time. Workaround: Use the -noaxisreorder switch. Status: Outstanding. ********************************************************* ID: TMCaa04250 Title: Adding constant to allocatable arrays has poor performance Description: Adding constant to allocatable arrays has poor performance. For better performance try passing the arrays to a subroutine and doing the addition there. Workaround: Status: Outstanding. ********************************************************* ID: TMCaa04277 Title: Where fails with compiler error when using safety=10 Description: Where fails during compile time with safety=10. Workaround: Use safety < 10; avoid safety=10. Status: Outstanding. ********************************************************* ID: TMCaa04374 Title: PACK() garbage mask memory leak Description: A pack of the form a = pack(b, mask) will consume additional memory each time it is called. Workaround: Use the third (vec) argument to PACK() to work around the problem. Status: Outstanding. ********************************************************* ID: TMCaa04402 Title: pdesc qualifier in directive can cause compiler to fail Description: A pdesc qualifier will cause the compiler to fail, if the assigned value is an undeclared dummy (i.e., one that is implicitly typed). For example, the directive CMF$ layout x(:serial,:block=1:pdesc=k) will cause the compiler to fail if k is a dummy variable that is not explicitly declared. Workaround: Explicitly declare the dummy variable. Status: Outstanding. ********************************************************* ID: TMCaa04429 Title: CMF2.1 compile problems with single precision in daps Description: Arithmetic operations done in one assignment sometimes cause a compiler failure. To workaround, break up the operations into more than one assignment. Ex: change the following line: pta1 = p2 * (1. + .5 * gm1 * am1*am1)**ggm1 to: pta1 = 0.5 * gm1 * pta1 pta1 = 1.0 + pta1 pta1 = pta1 ** ggm1 pta1 = p2 * pta1 Workaround: use -O or change the following line: pta1 = p2 * (1. + .5 * gm1 * am1*am1)**ggm1 to: pta1 = 0.5 * gm1 * pta1 pta1 = 1.0 + pta1 pta1 = pta1 ** ggm1 pta1 = p2 * pta1 Status: Outstanding.