Google
 

Trailing-Edge - PDP-10 Archives - BB-D480C-SB_1981 - fortra.doc
There are 10 other files named fortra.doc in the archive. Click here to see a list.


FORTRAN-10 -- Changes from V5A(621) to V6(1144)
December 1981






























COPYRIGHT (C) 1981 BY
DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.


THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND  COPIED
ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH  LICENSE AND WITH THE
INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR  ANY  OTHER
COPIES  THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE  IS  HEREBY
TRANSFERRED.

THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT  NOTICE
AND  SHOULD  NOT  BE  CONSTRUED  AS  A COMMITMENT BY DIGITAL EQUIPMENT
CORPORATION.

DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY  OF  ITS
SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
FORTRA.DOC - FORTRAN-10 Version 6                               Page 2


FORTRAN-10 -- Changes from V5A(621) to V6
July 1981



1.0  SUMMARY

Version 6 of the FORTRAN compiler  is  a  development  release.   Also
included  are  the latest versions of FOROTS, FORLIB and FORDDT.  This
compiler lays the groundwork for FORTRAN 77.

Fortran version 6 is Fortran version 5A with edits #621 through  #1144
inclusive.

1.1     Bibliography

The FORTRAN language and this  implementation  are  described  in  the
Software Notebooks and in the FORTRAN-10 Programmer's Reference Manual
- AA-0944E-TB.

1.2     Monitors

This version of Fortran will run on release 4 monitors.

1.3     Related System Software

The following system software must be used with the FORTRAN compiler:


     BLIS10  7E(227)
     DBMS 5A
     MACRO  53A(1152)
     LINK    4A(1220)
     FORDDT 6
     FOROTS  6
     FORLIB  6
     GALAXY 4
     SCAN    7B(572)
     SORT 4C
     HELPER 5(41)



2.0  EXTERNAL CHANGES

All KA support has been removed from the compiler.  The  switches  /KA
and /KI have also been removed.

I/O statmenta can take keywords in  their  control  information  lists
(.e.g.   READ(  UNIT=1,  FMT=100),  TABLE  ).   New OPEN arguments and
FORMAT descriptors have also been  added  for  FORTRAN  77.   See  the
manual and the ANSI FORTRAN 77 standard for further details.

Version  6  argument  blocks  are  incompatible  with  V5A.   Programs
compiled  with  the  V6  compiler  must  use the V6 FOROTS and FORLIB.
FORTRA.DOC - FORTRAN-10 Version 6                               Page 3


Programs compiled with the V5A compiler must be relinked to get the V6
FORLIB;   V6  FOROTS  supports  both  the new and old form of argument
blocks.

A new compiler switch  '/GFLOATING'  has  been  added  to  support  an
extended  range  of  exponent  for  double  precision.   This  feature
requires new microcode and FORLIB which  is  not  yet  available.   It
allows DP numbers with magnitudes of 1D+-308.



3.0  KNOWN BUGS AND DEFICIENCIES

No known problems.



4.0  INSTALLATION INSTRUCTIONS

See the file FORTRA.INS for information regarding installation.



5.0  INTERNAL CHANGES

The following is a list of all the edits made to  version  5A(621)  in
producing version 6.



#622   SPR11020   Internal   compiler   error   with   complex   array
                  reference.

#623   -----      Fix QUALIFY to  call  ONLIST  only  if  the  DOCHNGL
                  exists  (ie,  we're  not  in  an  iolist.   This  is
                  necessary to use a BLIS10 newer than 7B(222).

#624   QAR2166    Reorder radix 10 and reloc 400000.

#625   SPR23122   Fix LHINREGALC to set INREGFLG when setting  TARGTAC
                  to the reg on the LH of the assignment statement.

#626   SPR23169   Don't allow function names or array names without  a
                  parenthesized   argument   list   to   be   used  in
                  expressions  in  function  or  subroutine   argument
                  lists.

#627   SPR23755   Get variably-dimensioned arrays right when the first
                  two  (or  more)  subscripts  are  constant  and  the
                  dimension statement  appears  before  the  D.P.   or
                  COMPLEX statement.

#630   SPR10962   Fix ISOLATE to catch all iolists that cannot be made
                  into  slists  or  elists.   This includes cases like
                  a(-i), a(3*(i-1)), etc.  This edit removes edits 406
FORTRA.DOC - FORTRAN-10 Version 6                               Page 4


                  and 612, which only caught some cases.

#631   SPR10962   Teach VER5 how to zero out def points on iolists.

#632   SPR24245   When clobbering a reg, don't  clear  VARINREGFLG  in
                  the  symbol table if the variable is also in another
                  reg.

#633   SPR24236   Fix edit 433 to not clobber a constant table entry.

#634   SPR11277   Preload variables if  they  are  first  used  in  an
                  assignment statement that is the object statement of
                  a logical if.

#635   SPR24868   Make DATALIST return -1 if it gets  E66,  so  CALLER
                  won't believe return value is a linked list and blow
                  up.

#636   SPR23066   Don't dump labels to the REL file if we  don't  know
                  their  value.   This happens if LABLADJ decides that
                  the label is unreferenced and deletes it.

#637   SPR24802   If some statements  don't  get  postdominators,  fix
                  GRAPH  so  they  do  instead of giving infinite loop
                  message  and  stopping  optimization.    Also   make
                  inaccessible code algorithm look at predominators to
                  find more cases.  This fixes edit 327.

#640   SPR24971   Fix DOTOHASGN to check to see if .O assignment is in
                  an implied do, not if .O usage is.

#641   SPR25010   Logical if statement with call statement  as  result
                  gives  register  allocation  problems if it directly
                  precedes a do loop.

#642   SPR11409   Spurious page heading may be  given  if  form  feeds
                  occur in input program.

#643   SPR25201   Do not  allow  array  ref  to  become  part  of  two
                  potential common sub-expressions.

#644   SPR25390   In line  functions  with  neg  flags  -  bad  common
                  subexpression.

#645   SPR25249   Extra lines per page  in  listing  if  entry  points
                  present.

#646   SPR25250   Subroutine sixbit name should not be loc 0.

#647   SPR25315   Arrays in  hash  table  need  special  treatment  in
                  REDEFPT - internal compiler error otherwise.

#650   SPR25247   Make listings nicer for DP and string constants.

#651   SPQ25062   Iolist dependencies with .O vars.
FORTRA.DOC - FORTRAN-10 Version 6                               Page 5


#652   -----      Fix CHKOTHREGS (edit  632)  to  handle  double  word
                  variable case.

#653   SPR25441   Unit number for find statement should be  any  array
                  reference.

#654   SPR25297   Switches in bad command line are too sticky.

#655   SPR25338   Empty REL file with syntax switch.

#656   SPR25246   Protection failures not reported.

#657   SPR11554   /DEB/OPT warning message kills flag register  so  no
                  listing file given.

#660   SPR11427   IF(FN(I))GOTO 10 gives bad code if I  is  living  in
                  register.

#661   SPR24100   Do not throw away labeled statement.

#662   SPR25245   Inaccessible do  loop  can  give  internal  compiler
                  error.

#663   SPR25643   Fix entry points with formal functions.

#664   QAR118     Neg flag on skewed expr spells bad code.

#665   QAR118     B/C(I) cannot be common subexpression from A/B/C(I).

#666   SPR25572   DATA  (a(i),  i=10,1,-1)  loses  due   to   negative
                  increment - fix this.

#667   SPR25664   Page mark at end of buffer with one  following  null
                  word (last in buffer) not treated right.

#670   SPR25571   Continuation line must have  blank  chars  in  label
                  field.

#671   -----       Def pts need to be swapped when the  arguments  are
                  swapped.

#672   SPR25725   Not flag on array ref can give problems.

#673   SPR25984   Report illegally nested do loops correctly.

#674   SPR11803   Increase nesting level for DO loops from 32  to  79,
                  do  cleanup  in  GLOBAL,  add  test for larger stack
                  overflow,  and  add  error  message  to  ERROVG  and
                  ERROUT.

#675   SPR26049   Rubout in source prog may give  internal  errors  in
                  routine LEXICA - fix it.

#676   SPR11931   Change RESET to be RESETUUO.
FORTRA.DOC - FORTRAN-10 Version 6                               Page 6


#677   SPR25573   Add  a  DEBUG:PARAMETER  switch  this   causes   the
                  compiler  to  generate code at entry points to check
                  the number of parameters passed.   FOROTS  edit  755
                  must be added at the same time as 677.

#700   -----      Remove EHSIZ declaration (after edit 674).

#701   SPR22582   2 ** .R cannot become .R ** 2.

#702   -----      Listing of subprograms is sloppy.

#703   -----      Listing of scalars and arrays can give blank page in
                  listing.

#704   SPR26390   Fix default buffer size (if DEVSIZ fails).

#705   SPR26442   Make name from program statement be an  entry  point
                  for main program.

#706   SPR27170   Optimizer  gives  bad  code   for   big   expression
                  involving do loop index.

#707   SPR27153   Reduce JOBFF when freeing space up.

#710   SPR12299   Fix edit 657 to initialize DEBOPT.

#711   SPR26754   Put out FIN call with ENCODE/DECODE to reclaim  free
                  space.

#712   SPR26490   Illegally nested loops can  give  internal  compiler
                  error when trying to print error message!

#713   SPR26658   <CR><CR><EOB><LF>  kills  LEXICA   when   processing
                  comment line.

#714   SPR26498   Bad constant propagation (chosen bad).

#715   SPR12743   Not flag in COMSUB gives bad code.

#716   SPR26409   Subroutines  with  alternate  label  returns   cause
                  global  register  allocation  problems.  Pass on the
                  information  so  that  the  loops  can  be   treated
                  properly.

#717   SPR26560   Give meaningful error  message  on  redefinition  of
                  parameter variable.

#720   SPR27830   Poor code generated for assign go to stmnt  with  no
                  list (optimized only).

#721   -----      a=a*b should invalidate register for a (in case some
                  other var lives there).

#722   SPR28072   Add /NOCREF switch to INCLUDE statement.
FORTRA.DOC - FORTRAN-10 Version 6                               Page 7


#723   -----      Add /NOWARN:  selectivity to compiler  switch  list.
                  Code  is mainly in COMMAN (to process the switch and
                  modifiers)  and  in  INOUT  (where  the  message  is
                  printed by FATLERR).

#724   -----      Prevent internal compiler error with  n-ary  logical
                  trees.

#725   SPR27403   Change CSTMNT before calling NEXTUP.

#726   SPR28283   Fix code  for  double  precision  (KA)  and  complex
                  parameters for statement function.

#727   SPR13247   Logical if with  two  labels  can  cause  bad  block
                  structure (incorrect label count).

#730   SPR28275   Bad register allocation for a=amin(a,expr).

#731   SPR28246   Bad  code  for  common  subexpression  in  i/o  list
                  (common var).

#732   -----      Define SAVSTMNT for edit 731 (non-opt).

#733   -----      The "not" of  an  expression  which  resolves  to  a
                  constant  at  compile  time  has  problems using the
                  optimier.

#734   -----      After edit 650, DP constants can  get  printed  even
                  with CAMXX instructions!

#735   SPR28528   Output headings only when necessary.

#736   -----      Bad code for -(.r0-const) with V5 /opt.

#737   -----      Add the .NEQV.  operator.

#740   SPR13537   Allocate registers for unit=array(i,j) in  OPEN  and
                  CLOSE statements.

#741   -----      Add warning message when we find an  array  declared
                  using  the  "/"  to  specify upper and lower bounds.
                  Also clean up the error modules so that we  can  add
                  error  messages  more  easily  in the future without
                  having to make changes to each module.

#742   -----      Change STOP/PAUSE constant  from  octal  to  decimal
                  constant (max 6 chars).

#743   -----      Fix up edit 651 to be not so  ambitious.   Keep  the
                  optimization if possible.

#744   SPR28463   Double  word  array  in  SLIST/ELIST  may   use   an
                  odd-numbered register twice.

#745   -----      Accomodate long arg lists (.gtr.  124).
FORTRA.DOC - FORTRAN-10 Version 6                               Page 8


#746   SPR13673   Allow format labels to be assigned to  variables  in
                  assign statements.

#747   -----      Make all error messages lower case;   also  do  some
                  cleanup work in the error message routines.

#750   ------     Remove DEBUG:PARAMETER switch  from  compiler  (edit
                  677) and from FOROTS (edit 755).

#751   -----      Change the way the LOOKAHEAD table is formatted  and
                  used.   Make  action  routines occupy a field rather
                  than a bit (for expansion).  Enhance MASK so that it
                  is  faster  and  better,  and able to handle the new
                  format.   Fix  up  LEFT72  in  many  ways  -   error
                  detection  and  reporting,  action routine handling,
                  etc.  This also makes edit 741 work properly!

#752   SPR13736   If fatal errors are  generated  during  compilation,
                  discard the .REL file.

#753   SPR29028   Check the I/O list implied loop initial value for .O
                  variables when removing .O assignment nodes.

#754   SPR29120   Make I/O dependency check work when common sub nodes
                  are involved.

#755   SPR13884   Allow lower case in  INCLUDE/NOLIST/NOCREF  for  F20
                  version.

#756   -----      Addition to edit 751 so that  more  action  routines
                  can be used.

#757   -----      Add extra  checks  and  a  new  register  allocation
                  routine to free up the last free register pair for a
                  node which is targetted for that pair.

#760   -----      Add new  OPEN  arguments,  FORMAT  descriptors,  and
                  keywords for I/O control lists.

#761   -----      Add  /GFLOATING  support  and  remove   KA   support
                  (KA10FLG).

#762   -----      Split  COMMAN.MAC  in  two;    COMMAN.MAC   contains
                  FTNCMD,  and  a new module, REVHST.MAC, contains the
                  revision history and .JBVER symbols.

#763   13913      Cause optimizer to  consider  ENTRY  formals  during
                  definition point determination

#764   29279      Do not alloacate a register for an  immediate  array
                  ref I/O list item

#765   -----      Add  error  message  for  future  code   (Expression
                  illegal in output list).
FORTRA.DOC - FORTRAN-10 Version 6                               Page 9


#766   -----      Add error message for illegal use of an array.

#767   -----      Rewrite much of the command scanner for clarity, bug
                  fixes,  etc.  Fix bug with /GFL if GFL microcode not
                  present;  redo /GFL  processing.   Add  /F77  switch
                  (future use);  also add secondary switch word.

#770   29339      Make the code to move simple assignments out of  DOs
                  work.   This  also allows detection of uninitialized
                  variables  from  assignments  that  appeared  in  DO
                  loops.

#771   14108      Fix yet another case of mistaken STATEMENT FUNCTIONS
                  causing the compiler to die.

#772   29516      Generate  fatal  error  when  variable  used  as  an
                  adjustable   dimension   is   later   found   to  be
                  dimensioned itself.

#773   14234      Keep expressions such as X+.R and Y=.R  from  moving
                  outside the DO loop after reduction in strength.

#774   14244      For  READ   *,K,(X(L,K),L=1,2),   keep   expressions
                  involving  K  from  being common subed and moved off
                  the I/O stmnt node.  Addition to edit 731.

#775   10-29566   Make sure .O propagation walks all the stmnt.  nodes
                  on the second and subsequent passes.

#776   10-29609   Eliminate  ICE  during  register  substitution   for
                  statements of the form IF()CALL ....

#777   -----      Eliminate bogus syntax error when parsing  I/O  unit
                  spec.    which  is  an  array  reference.   Example:
                  READ(I(1),20)K.  Edit 751 must be installed for this
                  error to occur.

#1000  10-29620   Flag error if no name appears on a PROGRAM statement

#1001  -----      Rework  product  build  command  files.    Eliminate
                  references to obsolete software and make handling of
                  SCAN, WILD, and HELPER easier.

#1002  ------     Add a  new  structure  EVALTAB  for  the  lookup  of
                  argtype codes for argblock entries

#1003  ------     Add global symbol ..GFL.  to REL block  if  compiled
                  /GFLOAT.   Use  binds for processor and compiler ids
                  in REL block

#1004  ------     Fix library function handling to choose the 'Dxxxxx'
                  or 'Gxxxxx' routines for DP based on /GFLOAT

#1005  ------     Fix OPENCLOSE to handle unit specs without the unit=
FORTRA.DOC - FORTRAN-10 Version 6                              Page 10


#1006  ------     Remove  copies  of  KISNGL   from   CGEXPR.BLI   and
                  OUTMOD.BLI  putting  one  copy in UTIL.BLI (where it
                  belongs).  Fix immediate real constants  printed  in
                  listings.  Give warning for constant overflows.  Add
                  code for specops (p2mul, p2div, p21mul) for real and
                  DP numbers.

#1007  10-29681   Prevent PUTBAK  from  clobbering  random  words  and
                  pointers   when   attempting   to   do   common  sub
                  replacement for a DATACALL I/O list node.

#1010  10-29839   Allow definition  point  detetction  to  happen  for
                  NAMELIST elements.

#1011  -----      Allow TESTREPLACEMENT in  implied  loops  (fix  edit
                  577)

#1012  -----      REDUCE  needs  to  be  careful   about   non-integer
                  SPECOPs.

#1013  -----      If end-of-statement causes syntax error,  get  error
                  msg right.

#1014  Q10-04556  Allow list directed rereads, making reread just like
                  ACCEPT, TYPE, etc.

#1015  Q10-04743  FMT= is not optional for type, accept ,reread, etc.

#1016  Q10-04759  Report names for misspelled OPEN/CLOSE parameters

#1017  Q10-04733  Fix IOSTAT processing in OPEN/CLOSE

#1020  Q10-04575  Add synonms  for  PDP-11  FORTRAN  compatibility  to
                  OPEN/CLOSE.
                  INITIALSIZE= - FILESIZE=
                  NAME= - DIALOG=
                  TYPE= - STATUS=
                  Also fix ERR= processing.  Only allow ERR=label.

#1021  Q10-04502  Fix E0, E2, and E3 to read found when expecting  ...
                  (Remove 'a'.)

#1022  ------     Preserve bit patterns for octal and literal assigned
                  to  real  under GFLOATING.  Rounding the DP value to
                  SP destroys the pattern.

#1023  ------     Fix optimizer so  that  we  get  ELISTS  and  SLISTS
                  again.   Reduction in strength for variables of type
                  INDEX was not happening.

#1024  ------     Fix REGCLOBB to  handle  assignments  of  the  form:
                  REAL='literal'  when  compiling  /gfl.  REGCLOBB had
                  assumed that if the first half of a literal  was  in
                  an  AC  the  second  half must be in an adjacent AC.
                  Edit 1022 changed this for /gfl, by not "converting"
FORTRA.DOC - FORTRAN-10 Version 6                              Page 11


                  literals to real.

#1025  ------     Fix conversion of reals to logical under  GFLOATING.
                  Just taking the high order word losses.

#1026  ------     Poor checking for I/O dependeicies in I/O lists (bad
                  routine name)

#1027  ------     Add various definitions for V7 DO loops

#1030  ------     Fix GFLOATING DP to INT  conversion  (use  GFIX  not
                  GFIXR).    Also   leave  an  edit  history  for  the
                  ERR=label fix to OPENCLOSE

#1031  ------     Fix ABS for GFLOATING constants.  Use DABS since low
                  word  has  significance  When  folding  relationals,
                  chose low or high word of  each  constant  based  on
                  VALTP1  since octals are not converted to real under
                  GFLOATING.

#1032  SPR30251   When processing DATA statements free  up  the  space
                  used  by  constant sets, constant options and repeat
                  lists.

#1033  ------     Expand size of DO node to include DOZTRLABEL

#1034  ------     Do Def points better for F(G(X)) - X may change...

#1035  ------     Put out count for calls to .IOLST  -  add  COUNTARGS
                  routine.

#1036  Q-1348     Fix edit 1007 to make ALL backpointers  availible  -
                  even those in innermore loops.  This makes insertion
                  of the IOLSTCALL node correct in  the  more  obscure
                  cases.

#1037  SPR30396   Initialize   LOGICAL   variables    in    assignment
                  statements when dependent on relational expression.

#1040  SPR15381   Fix EXPRTYPER to  step  through  NEGNOT  nodes  when
                  deciding if type conversion nodes are needed.

#1041  ------     Fix I/O Optimizer bug  where  ((A(I),I),J=1,2)  does
                  not  know  that  A(I)  can  depend  on  I (in a READ
                  statement)

#1042  ------     Prohibit list directed encode/decode.

#1043  SPR15466   Add  'Consecutive  arithmetic   operators   illegal'
                  warning.

#1044  SPR15467   Add fatal error 'XXXXXXX  type  declaration  out  of
                  order'  for  the case where executable code preceeds
                  such a statement.
FORTRA.DOC - FORTRAN-10 Version 6                              Page 12


#1045  ------     Fix OPENCLOSE so ERR= literal, etc.   doesn't  break
                  label  processing.   NONIOINIO  and LOOK4LABELS were
                  not being reset.

#1046  ------     Replace edit 1040 to handle all cases of negated  DP
                  .boolean.  DP.

#1047  Q-5325     Add support for TOPS-10 execute only.

#1050  ------     Fix incorrect graph  for  a  program  containing  an
                  arithmetic  IF  where  all  3 branchs go to the same
                  label.  Also, in that case, retain the IF expression
                  if there are any function calls in it.

#1051  ------     Global register allocator does not always note  that
                  a  DO loop index has been globally allocated.  Also,
                  do not do global allocation  on  a  loop  containing
                  alternate returns from routines.

#1052  ------     Correct graph for extended range range brach out  of
                  inner DO to main code, to terminus of inner DO.

#1053  ------     Make FORTRA a global symbol.

#1054  ------     Fix bug with common  subs  and  non-existant  parent
                  pointer (/OPT only)

#1055  ------     Fix bug in HAULASS  where  assignment  stmnts  moved
                  when they shouldn't

#1056  -----      Stick type conversion node beneath .NOT.  node  when
                  necessary  to  prevent  awkward  register allocation
                  problems to odd registers.

#1057  Q-01410    Check the initial value and upper limit when looking
                  for the index variable in I/O optimizations.

#1060  ------     Fix bug with  const*negative-power-of-two  (constant
                  folding)

#1061  ------     Add warning for   used in random access.

#1062  SPR30950   Fix special case of SPECOP producing incorrect code.
                  The  case  of  I=-1*I**2  should  not be computed to
                  memory.

#1063  Q-5631     Add error detection for jumps  into  loops  with  no
                  exits.

#1064  Q-1483     Replace edit 1037.  Incomplete  code  generated  for
                  logical  assignment  statement.   Bad code generated
                  during optimization.

#1065  Q-5053     Replace SCAN specific  error  macros  with  parallel
                  ones  tailored  for  FORTRAN.  Eliminates ICEs after
FORTRA.DOC - FORTRAN-10 Version 6                              Page 13


                  errors, and strange ?  FTNXXX prefixs.

#1066  Q-5202     Eliminate LINE:xxxxx in  error  messages  where  not
                  pertinent.

#1067  SPR31074   Do not allow register 1 to be made available  for  a
                  statement if common subexpressions have already been
                  allocated in it.

#1070  ------     (Removed)

#1071  ------     Remove TAPEMODE from OPEN/CLOSE parameter plit

#1072  ------     Remove  %Consecutive  arithmetic  operators  illegal
                  until it can be put under flagger switch

#1073  ------     Fix ORERROR so that  REAL+  gives  reasonable  error
                  msg.

#1074  ------     Fix problems with folding  logical  IF's  that  have
                  A1NOTFLG  set.   The  NOT was being ignored for REAL
                  and DP expressions.

#1075  ------     Add GFL equivalent functions for IDINT and SNGL.

#1076  ------     Allow list-directed  reads  and  writes  without  an
                  iolist.

#1077  ------     Put in missing  JFCL  after  GETPPN  uuo  in  GETPPN
                  routine.

#1100  SPR31141   Add new error messages and make  a  statement  label
                  definition  entry  even if an ENF error (E91) should
                  occur.

#1101  Q-5209     ELiminate bad placement of CSSE initialization  when
                  expression  containing CSSE immediately follows a DO
                  loop.

#1102  ------     Make  .not.(-(-(.not  x)))   work.    NOTOFNEG   and
                  NEGOFNOT  were  not  noticing  the NEGFLG and NOTFLG
                  returned by the expression under them.

#1103  Q-1439     Eliminate   bad   code    for    LOGICAL=double-word
                  assignments.   Also,  make REAL=COMPLEX as efficient
                  as the code intended.

#1104  ------     Eliminate  bad  code  during  optimization  constant
                  propagation.   Negs  in  assignments  were not being
                  carried with the constants.

#1105  ------     Addition to edit 1063.  For nested  loops,  be  sure
                  that  the  loop  label  keeps  a correct label count
                  within LABLADJUST.
FORTRA.DOC - FORTRAN-10 Version 6                              Page 14


#1106  ------     Correction to edit 1103.  Restrict the  REAL=COMPLEX
                  check  to  only COMPLEX variables (not for instance,
                  functions) to agree with what the register allocator
                  expects.  Eliminates bad code.

#1107  ------     Give an error for the illegal constants 0H  and  ''.
                  They   are  prohibited  by  the  77  standard.   The
                  compiler used to build 0H as a word of nulls and  ''
                  as a a word of spaces followed by a word of nulls.

#1110  ------     Addition to edit 773.  Do not consider implied  DOs,
                  when  modifying  the  'variables  changed in the DO'
                  list.

#1111  SPR31190   Fix optimizer bug so that ((A(J,K),J=1,2,I),K=1,2,I)
                  with   I   in   common  does  not  create  a  common
                  subexpression which is  only  used  once.   The  CSE
                  would  be allocated to a register and ALCIOLST would
                  re-allocate the register.

#1112  ------     Fix edit 1063 so that graphing does the right  thing
                  by local label counts for nested DO loops with inner
                  references to outer labels.

#1113  ------     Fix code motion bug;  don't put  a  CSE  calculation
                  after  a  statement which has more than 1 successor.
                  (A statement with  more  than  1  successor  has  no
                  "after".)  To  do  this,  for any statement that has
                  more  than  1  successor,  set  ACC  bits  for  each
                  variable   that   the   statement  modifies  in  the
                  statement's postdominator and each successor.

#1114  ------     Set up R2 in STA0, prevents random "?FTNNIO Namelist
                  directed I/O with I/O list" messages

#1115  ------     Rework /NOWARn  selectivety  for  expandibility  and
                  maintainibility.   Supercedes edit 723, alters edits
                  741,766,1061,1063.

#1116  ------     Rework FLTGEN to be  more  correct,  and  compatible
                  with FLIRT.

#1117  ------     Eliminate  fixed   high   seg   origin   and   other
                  restrictions for TOPS-10 EXO.

#1120  Q-6505     Fix edit 735 by always clearing a flag so  that  the
                  "EQUIVALENCED VARIABLES" header is produced again.

#1121  ------     Add GETTABs to determine full path  and  device  for
                  GETSEGs

#1122  SPR31589   Fix PRIMITIVE to detect invalid complex expressions.

#1123  Q-1650     Make IOSTAT= work for arrays, formals and registers.
FORTRA.DOC - FORTRAN-10 Version 6                              Page 15


#1124  Q-1651     Make  the  compiler   realize   that   IOSTAT=   and
                  ASSOCIATEVARIABLE=  alter  formals  so that they are
                  stored at subprogram epilogue.

#1125  ------     Fix up local label counts one more time so  that  we
                  can  better detect jumps into loops.  Catch the more
                  obscure cases.

#1126  Q-1654     Remove last vestiges of CALL DEFINE FILE support.

#1127  ------     Change erroneous (and potentially dangerous) use  of
                  IDTARGET to TARGADDR in ARRNARGBLK.

#1130  Q-1647,8   Fix bad Y field  reference  in  PEEP02  by  changing
                  PEEPPTR[0,PBFSYMPTR]  to  PEEPPTR[0,PBFADDR].   Also
                  insert missing dot  before  PEEPPTR[1,PBFSYMPTR]  in
                  macro PRVNONEQNXT.  (AHM)

#1131  Q-1671     Check for storing before the first word of an  array
                  in  DATA  statements  since  we  already  check  for
                  storing after the last word.

#1132  Q-6347     Change E150 (edit 1061) to refer to REC= as well  as
                  '.   Also,  make  the  entries in the DUMDUM plit in
                  ACT1 have mixed case.

#1133  ------     Add  /STATISTICS  flag  for   in-house   performance
                  measurement.  It is disabled in the released V6.

#1134  SPR31654   Eliminate bad code produced for READ/WRITE/FIND with
                  both  a  subscripted  record  unit number and record
                  number, where a record  number  subscript  has  been
                  left  in  an  AC  prior  to the I/O statement.  Also
                  expand edit 376 to include FIND.

#1135  ------     Make conversion from DOUBLE PRECISION to COMPLEX  do
                  rounding.

#1136  ------     Make graphing know about END= and ERR= for  lots  of
                  I/O  statements.   Also make global label ref counts
                  correct for END=/ERR=.

#1137  ------     Fix looping optimizer for inaccessible DO stmnt with
                  jumps into the loop.

#1140  ------     Same as 1137,  but  for  nested  inaccessible  loops
                  where  only  the  inner  loop has an entrance (outer
                  loop does not get HASENT set).

#1141  SPR31686   Produce diagnostic when  more  than  24  significant
                  digits in an octal constant.

#1142  Q-6254     Eliminate ICE for  an  IO  list  complex  enough  to
                  require  more than 63 registers (64 single precision
                  array references, for example).
FORTRA.DOC - FORTRAN-10 Version 6                              Page 16


#1143  ------     More of edit 1136 to make "data transfer" statements
                  work as well as "device control" statements.  Delete
                  code in IODOXPN that incremented the reference count
                  for  labels used in END= and ERR= in "data transfer"
                  statements.   BLDKEY  now  references  those  labels
                  correctly.

#1144  Q-06632    Eliminate obscure problems and ICEs when optimizing,
                  and  hash  table  is  such  that the last hash entry
                  found in the table for a loop is for an  array  ref,
                  and  the  actual expression using that array ref now
                  points to the hash table.  eliminates unwanted calls
                  to NEWCOPY.



9.0  SUGGESTIONS

None.



[End of FORTRA.DOC]