Another bunch of patches from Craig. See ChangeLogs for details.
authorJeff Law <law@gcc.gnu.org>
Sun, 22 Feb 1998 19:36:33 +0000 (12:36 -0700)
committerJeff Law <law@gcc.gnu.org>
Sun, 22 Feb 1998 19:36:33 +0000 (12:36 -0700)
From-SVN: r18188

gcc/f/ChangeLog
gcc/f/com.c
gcc/f/g77.texi
gcc/f/g77install.texi
gcc/f/malloc.c
gcc/f/sta.c
gcc/f/sta.h
gcc/f/std.c
libf2c/ChangeLog
libf2c/configure.in
libf2c/libI77/close.c

index 864cf40adb7731b5bab07e212e9fb375bd24f28a..509061ef0c17c439490f5f060fd2feaef47deb39 100644 (file)
@@ -8,6 +8,15 @@ Fri Feb 20 10:11:20 1998  Craig Burley  <burley@gnu.org>
 
 Sun Jan 11 02:14:47 1998  Craig Burley  <burley@gnu.org>
 
 
 Sun Jan 11 02:14:47 1998  Craig Burley  <burley@gnu.org>
 
+       Fix 970626-2.f by not doing most back-end processing
+       when current_function_decl is an ERROR_MARK, and by
+       making that the case when its type would be an ERROR_MARK:
+       * com.c (ffecom_start_progunit_, finish_function,
+       lang_printable_name, start_function,
+       ffecom_finish_symbol_transform_): Test for ERROR_MARK.
+       * std.c (ffestd_stmt_pass_): Don't do any downstream
+       processing if ERROR_MARK.
+
        Support FORMAT(I<1+2>) (constant variable-FORMAT
        expressions):
        * bad.def (FFEBAD_FORMAT_VARIABLE): New diagnostic.
        Support FORMAT(I<1+2>) (constant variable-FORMAT
        expressions):
        * bad.def (FFEBAD_FORMAT_VARIABLE): New diagnostic.
@@ -106,6 +115,22 @@ Sun Nov 30 22:22:22 1997  Craig Burley  <burley@gnu.org>
        * com.c (ffecom_arglist_expr_): Pass null pointers for optional
        args which aren't supplied.
 
        * com.c (ffecom_arglist_expr_): Pass null pointers for optional
        args which aren't supplied.
 
+Sun Oct 26 02:36:21 1997  Craig Burley  <burley@gnu.ai.mit.edu>
+
+       * com.c (lang_print_error_function): Fix to more
+       reliably notice when the diagnosed region changes.
+
+Sat Oct 25 23:43:36 1997  Craig Burley  <burley@gnu.ai.mit.edu>
+
+       Fix 950327-0.f:
+       * sta.c, sta.h (ffesta_outpooldisp): New function.
+       * std.c (ffestd_stmt_pass_): Don't kill NULL pool.
+       (ffestd_R842): If pool already preserved, save NULL
+       for pool, because it should be killed only once.
+
+       * malloc.c [MALLOC_DEBUG]: Put initializer for `name'
+       component in braces, to avoid compiler warning.
+
 Fri Oct 10 13:00:48 1997  Craig Burley  <burley@gnu.ai.mit.edu>
 
        * ste.c (ffeste_begin_iterdo_): Fix loop setup so iteration
 Fri Oct 10 13:00:48 1997  Craig Burley  <burley@gnu.ai.mit.edu>
 
        * ste.c (ffeste_begin_iterdo_): Fix loop setup so iteration
index 06a7bf93f1a1d156aa521252ead4005794c0ab77..acaadb9a490ff99f1653a59b3e35093b9327d653 100644 (file)
@@ -6659,7 +6659,7 @@ ffecom_finish_global_ (ffeglobal global)
 static ffesymbol
 ffecom_finish_symbol_transform_ (ffesymbol s)
 {
 static ffesymbol
 ffecom_finish_symbol_transform_ (ffesymbol s)
 {
-  if (s == NULL)
+  if ((s == NULL) || (TREE_CODE (current_function_decl) == ERROR_MARK))
     return s;
 
   /* It's easy to know to transform an untransformed symbol, to make sure
     return s;
 
   /* It's easy to know to transform an untransformed symbol, to make sure
@@ -7948,7 +7948,8 @@ ffecom_start_progunit_ ()
 
   resume_momentary (yes);
 
 
   resume_momentary (yes);
 
-  store_parm_decls (main_program ? 1 : 0);
+  if (TREE_CODE (current_function_decl) != ERROR_MARK)
+    store_parm_decls (main_program ? 1 : 0);
 
   ffecom_start_compstmt_ ();
 
 
   ffecom_start_compstmt_ ();
 
@@ -14206,31 +14207,38 @@ finish_function (int nested)
   register tree fndecl = current_function_decl;
 
   assert (fndecl != NULL_TREE);
   register tree fndecl = current_function_decl;
 
   assert (fndecl != NULL_TREE);
-  if (nested)
-    assert (DECL_CONTEXT (fndecl) != NULL_TREE);
-  else
-    assert (DECL_CONTEXT (fndecl) == NULL_TREE);
+  if (TREE_CODE (fndecl) != ERROR_MARK)
+    {
+      if (nested)
+       assert (DECL_CONTEXT (fndecl) != NULL_TREE);
+      else
+       assert (DECL_CONTEXT (fndecl) == NULL_TREE);
+    }
 
 /*  TREE_READONLY (fndecl) = 1;
     This caused &foo to be of type ptr-to-const-function
     which then got a warning when stored in a ptr-to-function variable.  */
 
   poplevel (1, 0, 1);
 
 /*  TREE_READONLY (fndecl) = 1;
     This caused &foo to be of type ptr-to-const-function
     which then got a warning when stored in a ptr-to-function variable.  */
 
   poplevel (1, 0, 1);
-  BLOCK_SUPERCONTEXT (DECL_INITIAL (fndecl)) = fndecl;
 
 
-  /* Must mark the RESULT_DECL as being in this function.  */
+  if (TREE_CODE (fndecl) != ERROR_MARK)
+    {
+      BLOCK_SUPERCONTEXT (DECL_INITIAL (fndecl)) = fndecl;
+
+      /* Must mark the RESULT_DECL as being in this function.  */
 
 
-  DECL_CONTEXT (DECL_RESULT (fndecl)) = fndecl;
+      DECL_CONTEXT (DECL_RESULT (fndecl)) = fndecl;
 
 
-  /* Obey `register' declarations if `setjmp' is called in this fn.  */
-  /* Generate rtl for function exit.  */
-  expand_function_end (input_filename, lineno, 0);
+      /* Obey `register' declarations if `setjmp' is called in this fn.  */
+      /* Generate rtl for function exit.  */
+      expand_function_end (input_filename, lineno, 0);
 
 
-  /* So we can tell if jump_optimize sets it to 1.  */
-  can_reach_end = 0;
+      /* So we can tell if jump_optimize sets it to 1.  */
+      can_reach_end = 0;
 
 
-  /* Run the optimizers and output the assembler code for this function.  */
-  rest_of_compilation (fndecl);
+      /* Run the optimizers and output the assembler code for this function.  */
+      rest_of_compilation (fndecl);
+    }
 
   /* Free all the tree nodes making up this function.  */
   /* Switch back to allocating nodes permanently until we start another
 
   /* Free all the tree nodes making up this function.  */
   /* Switch back to allocating nodes permanently until we start another
@@ -14238,7 +14246,7 @@ finish_function (int nested)
   if (!nested)
     permanent_allocation (1);
 
   if (!nested)
     permanent_allocation (1);
 
-  if (DECL_SAVED_INSNS (fndecl) == 0 && !nested)
+  if (DECL_SAVED_INSNS (fndecl) == 0 && !nested && (TREE_CODE (fndecl) != ERROR_MARK))
     {
       /* Stop pointing to the local nodes about to be freed.  */
       /* But DECL_INITIAL must remain nonzero so we know this was an actual
     {
       /* Stop pointing to the local nodes about to be freed.  */
       /* But DECL_INITIAL must remain nonzero so we know this was an actual
@@ -14276,6 +14284,8 @@ lang_printable_name (tree decl, int v)
   switch (v)
     {
     default:
   switch (v)
     {
     default:
+      if (TREE_CODE (decl) == ERROR_MARK)
+       return "erroneous code";
       return IDENTIFIER_POINTER (DECL_NAME (decl));
     }
 }
       return IDENTIFIER_POINTER (DECL_NAME (decl));
     }
 }
@@ -14288,48 +14298,56 @@ void
 lang_print_error_function (file)
      char *file;
 {
 lang_print_error_function (file)
      char *file;
 {
+  static ffeglobal last_g = NULL;
   static ffesymbol last_s = NULL;
   static ffesymbol last_s = NULL;
+  ffeglobal g;
   ffesymbol s;
   char *kind;
 
   ffesymbol s;
   char *kind;
 
-  if (ffecom_primary_entry_ == NULL)
+  if ((ffecom_primary_entry_ == NULL)
+      || (ffesymbol_global (ffecom_primary_entry_) == NULL))
     {
     {
+      g = NULL;
       s = NULL;
       kind = NULL;
     }
       s = NULL;
       kind = NULL;
     }
-  else if (ffecom_nested_entry_ == NULL)
+  else
     {
     {
-      s = ffecom_primary_entry_;
-      switch (ffesymbol_kind (s))
+      g = ffesymbol_global (ffecom_primary_entry_);
+      if (ffecom_nested_entry_ == NULL)
        {
        {
-       case FFEINFO_kindFUNCTION:
-         kind = "function";
-         break;
+         s = ffecom_primary_entry_;
+         switch (ffesymbol_kind (s))
+           {
+           case FFEINFO_kindFUNCTION:
+             kind = "function";
+             break;
 
 
-       case FFEINFO_kindSUBROUTINE:
-         kind = "subroutine";
-         break;
+           case FFEINFO_kindSUBROUTINE:
+             kind = "subroutine";
+             break;
 
 
-       case FFEINFO_kindPROGRAM:
-         kind = "program";
-         break;
+           case FFEINFO_kindPROGRAM:
+             kind = "program";
+             break;
 
 
-       case FFEINFO_kindBLOCKDATA:
-         kind = "block-data";
-         break;
+           case FFEINFO_kindBLOCKDATA:
+             kind = "block-data";
+             break;
 
 
-       default:
-         kind = ffeinfo_kind_message (ffesymbol_kind (s));
-         break;
+           default:
+             kind = ffeinfo_kind_message (ffesymbol_kind (s));
+             break;
+           }
+       }
+      else
+       {
+         s = ffecom_nested_entry_;
+         kind = "statement function";
        }
        }
-    }
-  else
-    {
-      s = ffecom_nested_entry_;
-      kind = "statement function";
     }
 
     }
 
-  if (last_s != s)
+  if ((last_g != g) || (last_s != s))
     {
       if (file)
        fprintf (stderr, "%s: ", file);
     {
       if (file)
        fprintf (stderr, "%s: ", file);
@@ -14343,6 +14361,7 @@ lang_print_error_function (file)
          fprintf (stderr, "In %s `%s':\n", kind, name);
        }
 
          fprintf (stderr, "In %s `%s':\n", kind, name);
        }
 
+      last_g = g;
       last_s = s;
     }
 }
       last_s = s;
     }
 }
@@ -14615,42 +14634,51 @@ start_function (tree name, tree type, int nested, int public)
       assert (current_function_decl == NULL_TREE);
     }
 
       assert (current_function_decl == NULL_TREE);
     }
 
-  decl1 = build_decl (FUNCTION_DECL,
-                     name,
-                     type);
-  TREE_PUBLIC (decl1) = public ? 1 : 0;
-  if (nested)
-    DECL_INLINE (decl1) = 1;
-  TREE_STATIC (decl1) = 1;
-  DECL_EXTERNAL (decl1) = 0;
+  if (TREE_CODE (type) == ERROR_MARK)
+    decl1 = current_function_decl = error_mark_node;
+  else
+    {
+      decl1 = build_decl (FUNCTION_DECL,
+                         name,
+                         type);
+      TREE_PUBLIC (decl1) = public ? 1 : 0;
+      if (nested)
+       DECL_INLINE (decl1) = 1;
+      TREE_STATIC (decl1) = 1;
+      DECL_EXTERNAL (decl1) = 0;
 
 
-  announce_function (decl1);
+      announce_function (decl1);
 
 
-  /* Make the init_value nonzero so pushdecl knows this is not tentative.
-     error_mark_node is replaced below (in poplevel) with the BLOCK.  */
-  DECL_INITIAL (decl1) = error_mark_node;
+      /* Make the init_value nonzero so pushdecl knows this is not tentative.
+        error_mark_node is replaced below (in poplevel) with the BLOCK.  */
+      DECL_INITIAL (decl1) = error_mark_node;
 
 
-  /* Record the decl so that the function name is defined. If we already have
-     a decl for this name, and it is a FUNCTION_DECL, use the old decl.  */
+      /* Record the decl so that the function name is defined. If we already have
+        a decl for this name, and it is a FUNCTION_DECL, use the old decl.  */
+
+      current_function_decl = pushdecl (decl1);
+    }
 
 
-  current_function_decl = pushdecl (decl1);
   if (!nested)
     ffecom_outer_function_decl_ = current_function_decl;
 
   pushlevel (0);
 
   if (!nested)
     ffecom_outer_function_decl_ = current_function_decl;
 
   pushlevel (0);
 
-  make_function_rtl (current_function_decl);
+  if (TREE_CODE (current_function_decl) != ERROR_MARK)
+    {
+      make_function_rtl (current_function_decl);
 
 
-  restype = TREE_TYPE (TREE_TYPE (current_function_decl));
-  DECL_RESULT (current_function_decl)
-    = build_decl (RESULT_DECL, NULL_TREE, restype);
+      restype = TREE_TYPE (TREE_TYPE (current_function_decl));
+      DECL_RESULT (current_function_decl)
+       = build_decl (RESULT_DECL, NULL_TREE, restype);
+    }
 
   if (!nested)
     /* Allocate further tree nodes temporarily during compilation of this
        function only.  */
     temporary_allocation ();
 
 
   if (!nested)
     /* Allocate further tree nodes temporarily during compilation of this
        function only.  */
     temporary_allocation ();
 
-  if (!nested)
+  if (!nested && (TREE_CODE (current_function_decl) != ERROR_MARK))
     TREE_ADDRESSABLE (current_function_decl) = 1;
 
   immediate_size_expand = old_immediate_size_expand;
     TREE_ADDRESSABLE (current_function_decl) = 1;
 
   immediate_size_expand = old_immediate_size_expand;
index d2f3d995c0e3fe2631f9c2bd9e2c9abaadb885ec..6033fb42ea7e5d970b1bc30662a3455619c5f60a 100644 (file)
@@ -1345,6 +1345,8 @@ by type.  Explanations are in the following sections.
 -fcase-initcap  -fcase-upper  -fcase-lower  -fcase-preserve
 -ff2c-intrinsics-delete  -ff2c-intrinsics-hide
 -ff2c-intrinsics-disable  -ff2c-intrinsics-enable
 -fcase-initcap  -fcase-upper  -fcase-lower  -fcase-preserve
 -ff2c-intrinsics-delete  -ff2c-intrinsics-hide
 -ff2c-intrinsics-disable  -ff2c-intrinsics-enable
+-fbadu77-intrinsics-delete  -fbadu77-intrinsics-hide
+-fbadu77-intrinsics-disable  -fbadu77-intrinsics-enable
 -ff90-intrinsics-delete  -ff90-intrinsics-hide
 -ff90-intrinsics-disable  -ff90-intrinsics-enable
 -fgnu-intrinsics-delete  -fgnu-intrinsics-hide
 -ff90-intrinsics-delete  -ff90-intrinsics-hide
 -ff90-intrinsics-disable  -ff90-intrinsics-enable
 -fgnu-intrinsics-delete  -fgnu-intrinsics-hide
@@ -1827,9 +1829,11 @@ had read @samp{DIMENSION X(*)}.
 @cindex -fugly-comma option
 @cindex options, -fugly-comma
 @item -fugly-comma
 @cindex -fugly-comma option
 @cindex options, -fugly-comma
 @item -fugly-comma
-Treat a trailing comma in an argument list as specification
-of a trailing null argument, and treat an empty argument
-list as specification of a single null argument.
+In an external-procedure invocation,
+treat a trailing comma in the argument list
+as specification of a trailing null argument,
+and treat an empty argument list
+as specification of a single null argument.
 
 For example, @samp{CALL FOO(,)} is treated as
 @samp{CALL FOO(%VAL(0), %VAL(0))}.
 
 For example, @samp{CALL FOO(,)} is treated as
 @samp{CALL FOO(%VAL(0), %VAL(0))}.
@@ -1839,6 +1843,8 @@ And @samp{F = FUNC()} is treated as @samp{F = FUNC(%VAL(0))}.
 
 The default behavior, @samp{-fno-ugly-comma}, is to ignore
 a single trailing comma in an argument list.
 
 The default behavior, @samp{-fno-ugly-comma}, is to ignore
 a single trailing comma in an argument list.
+So, by default, @samp{CALL FOO(X,)} is treated
+exactly the same as @samp{CALL FOO(X)}.
 
 @xref{Ugly Null Arguments}, for more information.
 
 
 @xref{Ugly Null Arguments}, for more information.
 
@@ -2046,6 +2052,24 @@ while allowing any-case matching of intrinsics and keywords.
 For example, @samp{call Foo(i,I)} would pass two @emph{different}
 variables named @samp{i} and @samp{I} to a procedure named @samp{Foo}.)
 
 For example, @samp{call Foo(i,I)} would pass two @emph{different}
 variables named @samp{i} and @samp{I} to a procedure named @samp{Foo}.)
 
+@cindex -fbadu77-intrinsics-delete option
+@cindex options, -fbadu77-intrinsics-delete
+@item -fbadu77-intrinsics-delete
+@cindex -fbadu77-intrinsics-hide option
+@cindex options, -fbadu77-intrinsics-hide
+@item -fbadu77-intrinsics-hide
+@cindex -fbadu77-intrinsics-disable option
+@cindex options, -fbadu77-intrinsics-disable
+@item -fbadu77-intrinsics-disable
+@cindex -fbadu77-intrinsics-enable option
+@cindex options, -fbadu77-intrinsics-enable
+@item -fbadu77-intrinsics-enable
+@cindex badu77 intrinsics
+@cindex intrinsics, badu77
+Specify status of UNIX intrinsics having inappropriate forms.
+@samp{-fbadu77-intrinsics-enable} is the default.
+@xref{Intrinsic Groups}.
+
 @cindex -ff2c-intrinsics-delete option
 @cindex options, -ff2c-intrinsics-delete
 @item -ff2c-intrinsics-delete
 @cindex -ff2c-intrinsics-delete option
 @cindex options, -ff2c-intrinsics-delete
 @item -ff2c-intrinsics-delete
@@ -2062,6 +2086,7 @@ variables named @samp{i} and @samp{I} to a procedure named @samp{Foo}.)
 @cindex intrinsics, f2c
 Specify status of f2c-specific intrinsics.
 @samp{-ff2c-intrinsics-enable} is the default.
 @cindex intrinsics, f2c
 Specify status of f2c-specific intrinsics.
 @samp{-ff2c-intrinsics-enable} is the default.
+@xref{Intrinsic Groups}.
 
 @cindex -ff90-intrinsics-delete option
 @cindex options, -ff90-intrinsics-delete
 
 @cindex -ff90-intrinsics-delete option
 @cindex options, -ff90-intrinsics-delete
@@ -2079,6 +2104,7 @@ Specify status of f2c-specific intrinsics.
 @cindex intrinsics, Fortran 90
 Specify status of F90-specific intrinsics.
 @samp{-ff90-intrinsics-enable} is the default.
 @cindex intrinsics, Fortran 90
 Specify status of F90-specific intrinsics.
 @samp{-ff90-intrinsics-enable} is the default.
+@xref{Intrinsic Groups}.
 
 @cindex -fgnu-intrinsics-delete option
 @cindex options, -fgnu-intrinsics-delete
 
 @cindex -fgnu-intrinsics-delete option
 @cindex options, -fgnu-intrinsics-delete
@@ -2097,6 +2123,7 @@ Specify status of F90-specific intrinsics.
 @cindex intrinsics, COMPLEX
 Specify status of Digital's COMPLEX-related intrinsics.
 @samp{-fgnu-intrinsics-enable} is the default.
 @cindex intrinsics, COMPLEX
 Specify status of Digital's COMPLEX-related intrinsics.
 @samp{-fgnu-intrinsics-enable} is the default.
+@xref{Intrinsic Groups}.
 
 @cindex -fmil-intrinsics-delete option
 @cindex options, -fmil-intrinsics-delete
 
 @cindex -fmil-intrinsics-delete option
 @cindex options, -fmil-intrinsics-delete
@@ -2114,6 +2141,7 @@ Specify status of Digital's COMPLEX-related intrinsics.
 @cindex intrinsics, MIL-STD 1753
 Specify status of MIL-STD-1753-specific intrinsics.
 @samp{-fmil-intrinsics-enable} is the default.
 @cindex intrinsics, MIL-STD 1753
 Specify status of MIL-STD-1753-specific intrinsics.
 @samp{-fmil-intrinsics-enable} is the default.
+@xref{Intrinsic Groups}.
 
 @cindex -funix-intrinsics-delete option
 @cindex options, -funix-intrinsics-delete
 
 @cindex -funix-intrinsics-delete option
 @cindex options, -funix-intrinsics-delete
@@ -2131,6 +2159,7 @@ Specify status of MIL-STD-1753-specific intrinsics.
 @cindex intrinsics, UNIX
 Specify status of UNIX intrinsics.
 @samp{-funix-intrinsics-enable} is the default.
 @cindex intrinsics, UNIX
 Specify status of UNIX intrinsics.
 @samp{-funix-intrinsics-enable} is the default.
+@xref{Intrinsic Groups}.
 
 @cindex -fvxt-intrinsics-delete option
 @cindex options, -fvxt-intrinsics-delete
 
 @cindex -fvxt-intrinsics-delete option
 @cindex options, -fvxt-intrinsics-delete
@@ -2148,6 +2177,7 @@ Specify status of UNIX intrinsics.
 @cindex intrinsics, VXT
 Specify status of VXT intrinsics.
 @samp{-fvxt-intrinsics-enable} is the default.
 @cindex intrinsics, VXT
 Specify status of VXT intrinsics.
 @samp{-fvxt-intrinsics-enable} is the default.
+@xref{Intrinsic Groups}.
 
 @cindex -ffixed-line-length-@var{n} option
 @cindex options, -ffixed-line-length-@var{n}
 
 @cindex -ffixed-line-length-@var{n} option
 @cindex options, -ffixed-line-length-@var{n}
@@ -3251,7 +3281,7 @@ users use @code{g77}.
 such changes to @code{g77}.
 
 To find out about existing bugs and ongoing plans for GNU
 such changes to @code{g77}.
 
 To find out about existing bugs and ongoing plans for GNU
-Fortran, retrieve @code{ftp://alpha.gnu.org/g77.plan}
+Fortran, retrieve @uref{ftp://alpha.gnu.org/g77.plan}
 or, if you cannot do that, email
 @email{fortran@@gnu.org} asking for a recent copy of the
 GNU Fortran @file{.plan} file.
 or, if you cannot do that, email
 @email{fortran@@gnu.org} asking for a recent copy of the
 GNU Fortran @file{.plan} file.
@@ -3699,8 +3729,8 @@ way through the compilation process instead of being lost.
 GNU Fortran supports a variety of extensions to, and dialects
 of, the Fortran language.
 Its primary base is the ANSI FORTRAN 77 standard, currently available on
 GNU Fortran supports a variety of extensions to, and dialects
 of, the Fortran language.
 Its primary base is the ANSI FORTRAN 77 standard, currently available on
-the network at @code{http://kumo.swcp.com/fortran/F77_std/f77_std.html}
-or in @code{ftp://ftp.ast.cam.ac.uk/pub/michael/}.
+the network at @uref{http://kumo.swcp.com/fortran/F77_std/f77_std.html}
+or in @uref{ftp://ftp.ast.cam.ac.uk/pub/michael/}.
 It offers some extensions that are popular among users
 of UNIX @code{f77} and @code{f2c} compilers, some that
 are popular among users of other compilers (such as Digital
 It offers some extensions that are popular among users
 of UNIX @code{f77} and @code{f2c} compilers, some that
 are popular among users of other compilers (such as Digital
@@ -5726,7 +5756,7 @@ C INT(I1-I2) as INT(I1)-INT(I2) given INTEGER*2 I1,I2.
 C
 C Version 0:
 C Written by James Craig Burley 1997-02-20.
 C
 C Version 0:
 C Written by James Craig Burley 1997-02-20.
-C Contact via Internet email: burley@@gnu.ai.mit.edu
+C Contact via Internet email: burley@@gnu.org
 C
 C Purpose:
 C Determine how compilers handle non-standard IDIM
 C
 C Purpose:
 C Determine how compilers handle non-standard IDIM
@@ -7060,11 +7090,11 @@ without conversion.
 @cindex null arguments
 @cindex arguments, null
 
 @cindex null arguments
 @cindex arguments, null
 
-The @samp{-fugly-comma} option enables
-use of a single trailing comma to mean ``pass an extra trailing null
-argument'' in a list of actual arguments to a procedure other than a
-statement function, and use of an empty list of arguments to
-mean ``pass a single null argument''.
+The @samp{-fugly-comma} option enables use of a single trailing comma
+to mean ``pass an extra trailing null argument''
+in a list of actual arguments to an external procedure,
+and use of an empty list of arguments to such a procedure
+to mean ``pass a single null argument''.
 
 @cindex omitting arguments
 @cindex arguments, omitting
 
 @cindex omitting arguments
 @cindex arguments, omitting
@@ -7598,26 +7628,33 @@ The groups are:
 @cindex intrinsics, groups of
 @cindex groups of intrinsics
 @table @code
 @cindex intrinsics, groups of
 @cindex groups of intrinsics
 @table @code
+@cindex @code{badu77} intrinsics group
 @item badu77
 UNIX intrinsics having inappropriate forms (usually functions that
 have intended side effects).
 
 @item badu77
 UNIX intrinsics having inappropriate forms (usually functions that
 have intended side effects).
 
+@cindex @code{gnu} intrinsics group
 @item gnu
 Intrinsics the GNU Fortran language supports that are extensions to
 the Fortran standards (77 and 90).
 
 @item gnu
 Intrinsics the GNU Fortran language supports that are extensions to
 the Fortran standards (77 and 90).
 
+@cindex @code{f2c} intrinsics group
 @item f2c
 Intrinsics supported by AT&T's @code{f2c} converter and/or @code{libf2c}.
 
 @item f2c
 Intrinsics supported by AT&T's @code{f2c} converter and/or @code{libf2c}.
 
+@cindex @code{f90} intrinsics group
 @item f90
 Fortran 90 intrinsics.
 
 @item f90
 Fortran 90 intrinsics.
 
+@cindex @code{mil} intrinsics group
 @item mil
 MIL-STD 1753 intrinsics (@code{MVBITS}, @code{IAND}, @code{BTEST}, and so on).
 
 @item mil
 MIL-STD 1753 intrinsics (@code{MVBITS}, @code{IAND}, @code{BTEST}, and so on).
 
+@cindex @code{mil} intrinsics group
 @item unix
 UNIX intrinsics (@code{IARGC}, @code{EXIT}, @code{ERF}, and so on).
 
 @item unix
 UNIX intrinsics (@code{IARGC}, @code{EXIT}, @code{ERF}, and so on).
 
+@cindex @code{mil} intrinsics group
 @item vxt
 VAX/VMS FORTRAN (current as of v4) intrinsics.
 @end table
 @item vxt
 VAX/VMS FORTRAN (current as of v4) intrinsics.
 @end table
@@ -7867,7 +7904,7 @@ options @code{g77} passes by running @samp{g77 -v}.
 @cindex cfortran.h
 @cindex Netlib
 Even if you don't actually use it as a compiler, @samp{f2c} from
 @cindex cfortran.h
 @cindex Netlib
 Even if you don't actually use it as a compiler, @samp{f2c} from
-@code{ftp://ftp.netlib.org/f2c/src}, can be a useful tool when you're
+@uref{ftp://ftp.netlib.org/f2c/src}, can be a useful tool when you're
 interfacing (linking) Fortran and C@.
 @xref{f2c Skeletons and Prototypes,,Generating Skeletons and Prototypes with @code{f2c}}.
 
 interfacing (linking) Fortran and C@.
 @xref{f2c Skeletons and Prototypes,,Generating Skeletons and Prototypes with @code{f2c}}.
 
@@ -7877,7 +7914,7 @@ build the @file{src} directory from the distribution, consult the
 @code{f2c} program on your path.
 
 Something else that might be useful is @samp{cfortran.h} from
 @code{f2c} program on your path.
 
 Something else that might be useful is @samp{cfortran.h} from
-@code{ftp://zebra/desy.de/cfortran}.
+@uref{ftp://zebra/desy.de/cfortran}.
 This is a fairly general tool which
 can be used to generate interfaces for calling in both directions
 between Fortran and C@.
 This is a fairly general tool which
 can be used to generate interfaces for calling in both directions
 between Fortran and C@.
@@ -7921,8 +7958,8 @@ the return type of a @code{REAL} @code{FUNCTION}.)
 @samp{-P} option to generate C prototypes appropriate for calling the
 Fortran.@footnote{The files generated like this can also be used for
 inter-unit consistency checking of dummy and actual arguments, although
 @samp{-P} option to generate C prototypes appropriate for calling the
 Fortran.@footnote{The files generated like this can also be used for
 inter-unit consistency checking of dummy and actual arguments, although
-the @samp{ftnchek} tool from @code{ftp://ftp.netlib.org/fortran}
-or @code{ftp://ftp.dsm.fordham.edu} is
+the @samp{ftnchek} tool from @uref{ftp://ftp.netlib.org/fortran}
+or @uref{ftp://ftp.dsm.fordham.edu} is
 probably better for this purpose.}
 If the Fortran code containing any
 routines to be called from C is in file @file{joe.f}, use the command
 probably better for this purpose.}
 If the Fortran code containing any
 routines to be called from C is in file @file{joe.f}, use the command
@@ -10164,7 +10201,7 @@ or installing @code{g77} is not provided here.
 
 To find out about major bugs discovered in the current release and
 possible workarounds for them, retrieve
 
 To find out about major bugs discovered in the current release and
 possible workarounds for them, retrieve
-@code{ftp://alpha.gnu.org/g77.plan}.
+@uref{ftp://alpha.gnu.org/g77.plan}.
 
 (Note that some of this portion of the manual is lifted
 directly from the @code{gcc} manual, with minor modifications
 
 (Note that some of this portion of the manual is lifted
 directly from the @code{gcc} manual, with minor modifications
@@ -10541,7 +10578,7 @@ In the meantime, finding and fixing the programming
 bugs that lead to these behaviors is, ultimately, the user's
 responsibility, as difficult as that task can sometimes be.
 
 bugs that lead to these behaviors is, ultimately, the user's
 responsibility, as difficult as that task can sometimes be.
 
-@cindex `infinite spaces' printed
+@cindex ``infinite spaces'' printed
 @cindex spaces, endless printing of
 @cindex libc, non-ANSI or non-default
 @cindex C library
 @cindex spaces, endless printing of
 @cindex libc, non-ANSI or non-default
 @cindex C library
@@ -11029,16 +11066,17 @@ specifiers.
 Supporting this requires a significant redesign or replacement
 of @code{libf2c}.
 
 Supporting this requires a significant redesign or replacement
 of @code{libf2c}.
 
-However, a future version of @code{g77} might support
-this construct when the expression is constant.  For
-example:
+However, @code{g77} does support
+this construct when the expression is constant
+(as of version 0.5.22).
+For example:
 
 @smallexample
       PARAMETER (IWIDTH = 12)
 10    FORMAT (I<IWIDTH>)
 @end smallexample
 
 
 @smallexample
       PARAMETER (IWIDTH = 12)
 10    FORMAT (I<IWIDTH>)
 @end smallexample
 
-In the meantime, at least for output (@code{PRINT} and
+Otherwise, at least for output (@code{PRINT} and
 @code{WRITE}), Fortran code making use of this feature can
 be rewritten to avoid it by constructing the @code{FORMAT}
 string in a @code{CHARACTER} variable or array, then
 @code{WRITE}), Fortran code making use of this feature can
 be rewritten to avoid it by constructing the @code{FORMAT}
 string in a @code{CHARACTER} variable or array, then
@@ -12272,8 +12310,65 @@ their use into selective changes in your own code.
 @pindex ftncheck
 Validate your code with @code{ftnchek} or a similar code-checking
 tool.
 @pindex ftncheck
 Validate your code with @code{ftnchek} or a similar code-checking
 tool.
-@code{ftncheck} can be found at @code{ftp://ftp.netlib.org/fortran}
-or @code{ftp://ftp.dsm.fordham.edu}.
+@code{ftncheck} can be found at @uref{ftp://ftp.netlib.org/fortran}
+or @uref{ftp://ftp.dsm.fordham.edu}.
+
+@pindex make
+@cindex Makefile example
+Here are some sample @file{Makefile} rules using @code{ftnchek}
+``project'' files to do cross-file checking and @code{sfmakedepend}
+(from @uref{ftp://ahab.rutgers.edu/pub/perl/sfmakedepend})
+to maintain dependencies automatically.
+These assume the use of GNU @code{make}.
+
+@smallexample
+# Dummy suffix for ftnchek targets:
+.SUFFIXES: .chek
+.PHONY: chekall
+
+# How to compile .f files (for implicit rule):
+FC = g77
+# Assume `include' directory:
+FFLAGS = -Iinclude -g -O -Wall
+
+# Flags for ftnchek:
+CHEK1 = -array=0 -include=includes -noarray
+CHEK2 = -nonovice -usage=1 -notruncation
+CHEKFLAGS = $(CHEK1) $(CHEK2)
+
+# Run ftnchek with all the .prj files except the one corresponding
+# to the target's root:
+%.chek : %.f ; \
+  ftnchek $(filter-out $*.prj,$(PRJS)) $(CHEKFLAGS) \
+    -noextern -library $<
+
+# Derive a project file from a source file:
+%.prj : %.f ; \
+  ftnchek $(CHEKFLAGS) -noextern -project -library $<
+
+# The list of objects is assumed to be in variable OBJS.
+# Sources corresponding to the objects:
+SRCS = $(OBJS:%.o=%.f)
+# ftnchek project files:
+PRJS = $(OBJS:%.o=%.prj)
+
+# Build the program
+prog: $(OBJS) ; \
+  $(FC) -o $@ $(OBJS)
+
+chekall: $(PRJS) ; \
+  ftnchek $(CHEKFLAGS) $(PRJS)
+
+prjs: $(PRJS)
+
+# For Emacs M-x find-tag:
+TAGS: $(SRCS) ; \
+  etags $(SRCS)
+
+# Rebuild dependencies:
+depend: ; \
+  sfmakedepend -I $(PLTLIBDIR) -I includes -a prj $(SRCS1)
+@end smallexample
 
 @item
 Try your code out using other Fortran compilers, such as @code{f2c}.
 
 @item
 Try your code out using other Fortran compilers, such as @code{f2c}.
@@ -13352,7 +13447,7 @@ that the explanations are given below, and the diagnostics themselves
 identify the appropriate explanation.
 
 Identification uses the GNU Info format---specifically, the @code{info}
 identify the appropriate explanation.
 
 Identification uses the GNU Info format---specifically, the @code{info}
-command that displays the explanation is given in within square
+command that displays the explanation is given within square
 brackets in the diagnostic.
 For example:
 
 brackets in the diagnostic.
 For example:
 
@@ -13556,7 +13651,7 @@ The following sample program might help:
       PROGRAM JCB003
 C
 C Written by James Craig Burley 1997-02-23.
       PROGRAM JCB003
 C
 C Written by James Craig Burley 1997-02-23.
-C Contact via Internet email: burley@@gnu.ai.mit.edu
+C Contact via Internet email: burley@@gnu.org
 C
 C Determine how compilers handle non-standard REAL
 C and AIMAG on DOUBLE COMPLEX operands.
 C
 C Determine how compilers handle non-standard REAL
 C and AIMAG on DOUBLE COMPLEX operands.
index bc0adcda2d780e49671a83b984f714b842490b92..33223fc552f430d52b99c8e4542c259af606adcb 100644 (file)
@@ -5,7 +5,7 @@
 @c The text of this file appears in the file INSTALL
 @c in the G77 distribution, as well as in the G77 manual.
 
 @c The text of this file appears in the file INSTALL
 @c in the G77 distribution, as well as in the G77 manual.
 
-@c 1997-09-09
+@c 1997-12-23
 
 Note most of this information is out of date and superceded by the EGCS
 install procedures.  It is provided for historical reference only.
 
 Note most of this information is out of date and superceded by the EGCS
 install procedures.  It is provided for historical reference only.
@@ -66,9 +66,9 @@ most systems, if desired.
 
 =======
 The version of GNU @code{gzip} used to package this release
 
 =======
 The version of GNU @code{gzip} used to package this release
-is 1.24.
+is 1.2.4.
 (The version of GNU @code{tar} used to package this release
 (The version of GNU @code{tar} used to package this release
-is 1.11.2.)
+is 1.12.)
 
 @item @file{gcc-2.7.2.3.tar.gz}
 You need to have this, or some other applicable, version
 
 @item @file{gcc-2.7.2.3.tar.gz}
 You need to have this, or some other applicable, version
@@ -202,7 +202,7 @@ In any case, you can apply patches by hand---patch files
 are designed for humans to read them.
 
 The version of GNU @code{patch} used to develop this release
 are designed for humans to read them.
 
 The version of GNU @code{patch} used to develop this release
-is 2.4.
+is 2.5.
 
 @item @code{make}
 Your system must have @code{make}, and you will probably save
 
 @item @code{make}
 Your system must have @code{make}, and you will probably save
@@ -210,7 +210,7 @@ yourself a lot of trouble if it is GNU @code{make} (sometimes
 referred to as @code{gmake}).
 
 The version of GNU @code{make} used to develop this release
 referred to as @code{gmake}).
 
 The version of GNU @code{make} used to develop this release
-is 3.73.
+is 3.76.1.
 
 @item @code{cc}
 Your system must have a working C compiler.
 
 @item @code{cc}
 Your system must have a working C compiler.
@@ -300,10 +300,10 @@ either @code{gcc} or @code{g77}.
 These problems can occur on most or all systems.
 
 @menu
 These problems can occur on most or all systems.
 
 @menu
-* GNU C Required::            Why even ANSI C is not enough.
+* GNU C Required::             Why even ANSI C is not enough.
 * Patching GNU CC Necessary::  Why @code{gcc} must be patched first.
 * Building GNU CC Necessary::  Why you can't build @emph{just} Fortran.
 * Patching GNU CC Necessary::  Why @code{gcc} must be patched first.
 * Building GNU CC Necessary::  Why you can't build @emph{just} Fortran.
-* Missing strtoul::           If linking @code{f771} fails due to an
+* Missing strtoul::            If linking @code{f771} fails due to an
                                 unresolved reference to @code{strtoul}.
 * Cleanup Kills Stage Directories::  A minor nit for @code{g77} developers.
 * Missing gperf?::             When building requires @code{gperf}.
                                 unresolved reference to @code{strtoul}.
 * Cleanup Kills Stage Directories::  A minor nit for @code{g77} developers.
 * Missing gperf?::             When building requires @code{gperf}.
index 1cbaf0399ca1fe99fe0729aca3fee6a6bbf86685..4a553e920843b78d2fd3c272ccdb707e97c6c78b 100644 (file)
@@ -51,7 +51,7 @@ struct _malloc_root_ malloc_root_
     (mallocArea_) &malloc_root_.malloc_pool_image_.first,
     0,
 #if MALLOC_DEBUG
     (mallocArea_) &malloc_root_.malloc_pool_image_.first,
     0,
 #if MALLOC_DEBUG
-    0, 0, 0, 0, 0, 0, 0, '/'
+    0, 0, 0, 0, 0, 0, 0, { '/' }
 #endif
   },
 };
 #endif
   },
 };
index 328bfd0f662e805b859fe083ec6308de723cbf62..281ca9361333b1067b0e60005139733a894821dd 100644 (file)
@@ -1792,9 +1792,11 @@ ffesta_ffebad_2t (ffebad errnum, ffelexToken t1, ffelexToken t2)
     }
 }
 
     }
 }
 
-/* ffesta_set_outpooldisp -- Set disposition of statement output pool
-
-   ffesta_set_outpooldisp(FFESTA_pooldispPRESERVE);  */
+ffestaPooldisp
+ffesta_outpooldisp ()
+{
+  return ffesta_outpooldisp_;
+}
 
 void
 ffesta_set_outpooldisp (ffestaPooldisp d)
 
 void
 ffesta_set_outpooldisp (ffestaPooldisp d)
index 132d0e84d4bc9ad91d9c9804326f925ae0c98892..26e78c412ce2fe17950a884191573e595e08715d 100644 (file)
@@ -98,6 +98,7 @@ void ffesta_ffebad_2st (ffebad msg, char *s, ffelexToken t1, ffelexToken t2);
 void ffesta_ffebad_2t (ffebad msg, ffelexToken t1, ffelexToken t2);
 ffelexHandler ffesta_zero (ffelexToken t);
 ffelexHandler ffesta_two (ffelexToken first, ffelexToken second);
 void ffesta_ffebad_2t (ffebad msg, ffelexToken t1, ffelexToken t2);
 ffelexHandler ffesta_zero (ffelexToken t);
 ffelexHandler ffesta_two (ffelexToken first, ffelexToken second);
+ffestaPooldisp ffesta_outpooldisp (void);
 void ffesta_set_outpooldisp (ffestaPooldisp d);
 
 /* Define macros. */
 void ffesta_set_outpooldisp (ffestaPooldisp d);
 
 /* Define macros. */
index 78538d1597821020edc409762d5d83bc09ed1711..dac22817dabb0330e18fc781d0f215e80b5b3873 100644 (file)
@@ -662,9 +662,10 @@ ffestd_stmt_pass_ ()
 {
   ffestdStmt_ stmt;
   ffestdExprItem_ expr;                /* For traversing lists. */
 {
   ffestdStmt_ stmt;
   ffestdExprItem_ expr;                /* For traversing lists. */
+  bool okay = (TREE_CODE (current_function_decl) != ERROR_MARK);
 
 #if FFECOM_targetCURRENT == FFECOM_targetGCC
 
 #if FFECOM_targetCURRENT == FFECOM_targetGCC
-  if (ffestd_2pass_entrypoints_ != 0)
+  if ((ffestd_2pass_entrypoints_ != 0) && okay)
     {
       tree which = ffecom_which_entrypoint_decl ();
       tree value;
     {
       tree which = ffecom_which_entrypoint_decl ();
       tree value;
@@ -718,83 +719,97 @@ ffestd_stmt_pass_ ()
        {
        case FFESTD_stmtidENDDOLOOP_:
          ffestd_subr_line_restore_ (stmt);
        {
        case FFESTD_stmtidENDDOLOOP_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_do (stmt->u.enddoloop.block);
+         if (okay)
+           ffeste_do (stmt->u.enddoloop.block);
          ffestw_kill (stmt->u.enddoloop.block);
          break;
 
        case FFESTD_stmtidENDLOGIF_:
          ffestd_subr_line_restore_ (stmt);
          ffestw_kill (stmt->u.enddoloop.block);
          break;
 
        case FFESTD_stmtidENDLOGIF_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_end_R807 ();
+         if (okay)
+           ffeste_end_R807 ();
          break;
 
        case FFESTD_stmtidEXECLABEL_:
          break;
 
        case FFESTD_stmtidEXECLABEL_:
-         ffeste_labeldef_branch (stmt->u.execlabel.label);
+         if (okay)
+           ffeste_labeldef_branch (stmt->u.execlabel.label);
          break;
 
        case FFESTD_stmtidFORMATLABEL_:
          break;
 
        case FFESTD_stmtidFORMATLABEL_:
-         ffeste_labeldef_format (stmt->u.formatlabel.label);
+         if (okay)
+           ffeste_labeldef_format (stmt->u.formatlabel.label);
          break;
 
        case FFESTD_stmtidR737A_:
          ffestd_subr_line_restore_ (stmt);
          break;
 
        case FFESTD_stmtidR737A_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R737A (stmt->u.R737A.dest, stmt->u.R737A.source);
+         if (okay)
+           ffeste_R737A (stmt->u.R737A.dest, stmt->u.R737A.source);
          malloc_pool_kill (stmt->u.R737A.pool);
          break;
 
        case FFESTD_stmtidR803_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.R737A.pool);
          break;
 
        case FFESTD_stmtidR803_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R803 (stmt->u.R803.expr);
+         if (okay)
+           ffeste_R803 (stmt->u.R803.expr);
          malloc_pool_kill (stmt->u.R803.pool);
          break;
 
        case FFESTD_stmtidR804_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.R803.pool);
          break;
 
        case FFESTD_stmtidR804_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R804 (stmt->u.R804.expr);
+         if (okay)
+           ffeste_R804 (stmt->u.R804.expr);
          malloc_pool_kill (stmt->u.R804.pool);
          break;
 
        case FFESTD_stmtidR805_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.R804.pool);
          break;
 
        case FFESTD_stmtidR805_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R805 ();
+         if (okay)
+           ffeste_R805 ();
          break;
 
        case FFESTD_stmtidR806_:
          ffestd_subr_line_restore_ (stmt);
          break;
 
        case FFESTD_stmtidR806_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R806 ();
+         if (okay)
+           ffeste_R806 ();
          break;
 
        case FFESTD_stmtidR807_:
          ffestd_subr_line_restore_ (stmt);
          break;
 
        case FFESTD_stmtidR807_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R807 (stmt->u.R807.expr);
+         if (okay)
+           ffeste_R807 (stmt->u.R807.expr);
          malloc_pool_kill (stmt->u.R807.pool);
          break;
 
        case FFESTD_stmtidR809_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.R807.pool);
          break;
 
        case FFESTD_stmtidR809_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R809 (stmt->u.R809.block, stmt->u.R809.expr);
+         if (okay)
+           ffeste_R809 (stmt->u.R809.block, stmt->u.R809.expr);
          malloc_pool_kill (stmt->u.R809.pool);
          break;
 
        case FFESTD_stmtidR810_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.R809.pool);
          break;
 
        case FFESTD_stmtidR810_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R810 (stmt->u.R810.block, stmt->u.R810.casenum);
+         if (okay)
+           ffeste_R810 (stmt->u.R810.block, stmt->u.R810.casenum);
          malloc_pool_kill (stmt->u.R810.pool);
          break;
 
        case FFESTD_stmtidR811_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.R810.pool);
          break;
 
        case FFESTD_stmtidR811_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R811 (stmt->u.R811.block);
+         if (okay)
+           ffeste_R811 (stmt->u.R811.block);
          malloc_pool_kill (ffestw_select (stmt->u.R811.block)->pool);
          ffestw_kill (stmt->u.R811.block);
          break;
 
        case FFESTD_stmtidR819A_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (ffestw_select (stmt->u.R811.block)->pool);
          ffestw_kill (stmt->u.R811.block);
          break;
 
        case FFESTD_stmtidR819A_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R819A (stmt->u.R819A.block, stmt->u.R819A.label,
-                       stmt->u.R819A.var,
-                       stmt->u.R819A.start, stmt->u.R819A.start_token,
-                       stmt->u.R819A.end, stmt->u.R819A.end_token,
-                       stmt->u.R819A.incr, stmt->u.R819A.incr_token);
+         if (okay)
+           ffeste_R819A (stmt->u.R819A.block, stmt->u.R819A.label,
+                         stmt->u.R819A.var,
+                         stmt->u.R819A.start, stmt->u.R819A.start_token,
+                         stmt->u.R819A.end, stmt->u.R819A.end_token,
+                         stmt->u.R819A.incr, stmt->u.R819A.incr_token);
          ffelex_token_kill (stmt->u.R819A.start_token);
          ffelex_token_kill (stmt->u.R819A.end_token);
          if (stmt->u.R819A.incr_token != NULL)
          ffelex_token_kill (stmt->u.R819A.start_token);
          ffelex_token_kill (stmt->u.R819A.end_token);
          if (stmt->u.R819A.incr_token != NULL)
@@ -804,269 +819,342 @@ ffestd_stmt_pass_ ()
 
        case FFESTD_stmtidR819B_:
          ffestd_subr_line_restore_ (stmt);
 
        case FFESTD_stmtidR819B_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R819B (stmt->u.R819B.block, stmt->u.R819B.label,
-                       stmt->u.R819B.expr);
+         if (okay)
+           ffeste_R819B (stmt->u.R819B.block, stmt->u.R819B.label,
+                         stmt->u.R819B.expr);
          malloc_pool_kill (stmt->u.R819B.pool);
          break;
 
        case FFESTD_stmtidR825_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.R819B.pool);
          break;
 
        case FFESTD_stmtidR825_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R825 ();
+         if (okay)
+           ffeste_R825 ();
          break;
 
        case FFESTD_stmtidR834_:
          ffestd_subr_line_restore_ (stmt);
          break;
 
        case FFESTD_stmtidR834_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R834 (stmt->u.R834.block);
+         if (okay)
+           ffeste_R834 (stmt->u.R834.block);
          break;
 
        case FFESTD_stmtidR835_:
          ffestd_subr_line_restore_ (stmt);
          break;
 
        case FFESTD_stmtidR835_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R835 (stmt->u.R835.block);
+         if (okay)
+           ffeste_R835 (stmt->u.R835.block);
          break;
 
        case FFESTD_stmtidR836_:
          ffestd_subr_line_restore_ (stmt);
          break;
 
        case FFESTD_stmtidR836_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R836 (stmt->u.R836.label);
+         if (okay)
+           ffeste_R836 (stmt->u.R836.label);
          break;
 
        case FFESTD_stmtidR837_:
          ffestd_subr_line_restore_ (stmt);
          break;
 
        case FFESTD_stmtidR837_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R837 (stmt->u.R837.labels, stmt->u.R837.count,
-                      stmt->u.R837.expr);
+         if (okay)
+           ffeste_R837 (stmt->u.R837.labels, stmt->u.R837.count,
+                        stmt->u.R837.expr);
          malloc_pool_kill (stmt->u.R837.pool);
          break;
 
        case FFESTD_stmtidR838_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.R837.pool);
          break;
 
        case FFESTD_stmtidR838_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R838 (stmt->u.R838.label, stmt->u.R838.target);
+         if (okay)
+           ffeste_R838 (stmt->u.R838.label, stmt->u.R838.target);
          malloc_pool_kill (stmt->u.R838.pool);
          break;
 
        case FFESTD_stmtidR839_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.R838.pool);
          break;
 
        case FFESTD_stmtidR839_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R839 (stmt->u.R839.target);
+         if (okay)
+           ffeste_R839 (stmt->u.R839.target);
          malloc_pool_kill (stmt->u.R839.pool);
          break;
 
        case FFESTD_stmtidR840_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.R839.pool);
          break;
 
        case FFESTD_stmtidR840_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R840 (stmt->u.R840.expr, stmt->u.R840.neg, stmt->u.R840.zero,
-                      stmt->u.R840.pos);
+         if (okay)
+           ffeste_R840 (stmt->u.R840.expr, stmt->u.R840.neg, stmt->u.R840.zero,
+                        stmt->u.R840.pos);
          malloc_pool_kill (stmt->u.R840.pool);
          break;
 
        case FFESTD_stmtidR841_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.R840.pool);
          break;
 
        case FFESTD_stmtidR841_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R841 ();
+         if (okay)
+           ffeste_R841 ();
          break;
 
        case FFESTD_stmtidR842_:
          ffestd_subr_line_restore_ (stmt);
          break;
 
        case FFESTD_stmtidR842_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R842 (stmt->u.R842.expr);
-         malloc_pool_kill (stmt->u.R842.pool);
+         if (okay)
+           ffeste_R842 (stmt->u.R842.expr);
+         if (stmt->u.R842.pool != NULL)
+           malloc_pool_kill (stmt->u.R842.pool);
          break;
 
        case FFESTD_stmtidR843_:
          ffestd_subr_line_restore_ (stmt);
          break;
 
        case FFESTD_stmtidR843_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R843 (stmt->u.R843.expr);
+         if (okay)
+           ffeste_R843 (stmt->u.R843.expr);
          malloc_pool_kill (stmt->u.R843.pool);
          break;
 
        case FFESTD_stmtidR904_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.R843.pool);
          break;
 
        case FFESTD_stmtidR904_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R904 (stmt->u.R904.params);
+         if (okay)
+           ffeste_R904 (stmt->u.R904.params);
          malloc_pool_kill (stmt->u.R904.pool);
          break;
 
        case FFESTD_stmtidR907_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.R904.pool);
          break;
 
        case FFESTD_stmtidR907_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R907 (stmt->u.R907.params);
+         if (okay)
+           ffeste_R907 (stmt->u.R907.params);
          malloc_pool_kill (stmt->u.R907.pool);
          break;
 
        case FFESTD_stmtidR909_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.R907.pool);
          break;
 
        case FFESTD_stmtidR909_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R909_start (stmt->u.R909.params, stmt->u.R909.only_format,
-                            stmt->u.R909.unit, stmt->u.R909.format,
-                            stmt->u.R909.rec, stmt->u.R909.key);
+         if (okay)
+           ffeste_R909_start (stmt->u.R909.params, stmt->u.R909.only_format,
+                              stmt->u.R909.unit, stmt->u.R909.format,
+                              stmt->u.R909.rec, stmt->u.R909.key);
          for (expr = stmt->u.R909.list; expr != NULL; expr = expr->next)
            {
          for (expr = stmt->u.R909.list; expr != NULL; expr = expr->next)
            {
-             ffeste_R909_item (expr->expr, expr->token);
+             if (okay)
+               ffeste_R909_item (expr->expr, expr->token);
              ffelex_token_kill (expr->token);
            }
              ffelex_token_kill (expr->token);
            }
-         ffeste_R909_finish ();
+         if (okay)
+           ffeste_R909_finish ();
          malloc_pool_kill (stmt->u.R909.pool);
          break;
 
        case FFESTD_stmtidR910_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.R909.pool);
          break;
 
        case FFESTD_stmtidR910_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R910_start (stmt->u.R910.params, stmt->u.R910.unit,
-                            stmt->u.R910.format, stmt->u.R910.rec);
+         if (okay)
+           ffeste_R910_start (stmt->u.R910.params, stmt->u.R910.unit,
+                              stmt->u.R910.format, stmt->u.R910.rec);
          for (expr = stmt->u.R910.list; expr != NULL; expr = expr->next)
            {
          for (expr = stmt->u.R910.list; expr != NULL; expr = expr->next)
            {
-             ffeste_R910_item (expr->expr, expr->token);
+             if (okay)
+               ffeste_R910_item (expr->expr, expr->token);
              ffelex_token_kill (expr->token);
            }
              ffelex_token_kill (expr->token);
            }
-         ffeste_R910_finish ();
+         if (okay)
+           ffeste_R910_finish ();
          malloc_pool_kill (stmt->u.R910.pool);
          break;
 
        case FFESTD_stmtidR911_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.R910.pool);
          break;
 
        case FFESTD_stmtidR911_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R911_start (stmt->u.R911.params, stmt->u.R911.format);
+         if (okay)
+           ffeste_R911_start (stmt->u.R911.params, stmt->u.R911.format);
          for (expr = stmt->u.R911.list; expr != NULL; expr = expr->next)
            {
          for (expr = stmt->u.R911.list; expr != NULL; expr = expr->next)
            {
-             ffeste_R911_item (expr->expr, expr->token);
+             if (okay)
+               ffeste_R911_item (expr->expr, expr->token);
              ffelex_token_kill (expr->token);
            }
              ffelex_token_kill (expr->token);
            }
-         ffeste_R911_finish ();
+         if (okay)
+           ffeste_R911_finish ();
          malloc_pool_kill (stmt->u.R911.pool);
          break;
 
        case FFESTD_stmtidR919_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.R911.pool);
          break;
 
        case FFESTD_stmtidR919_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R919 (stmt->u.R919.params);
+         if (okay)
+           ffeste_R919 (stmt->u.R919.params);
          malloc_pool_kill (stmt->u.R919.pool);
          break;
 
        case FFESTD_stmtidR920_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.R919.pool);
          break;
 
        case FFESTD_stmtidR920_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R920 (stmt->u.R920.params);
+         if (okay)
+           ffeste_R920 (stmt->u.R920.params);
          malloc_pool_kill (stmt->u.R920.pool);
          break;
 
        case FFESTD_stmtidR921_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.R920.pool);
          break;
 
        case FFESTD_stmtidR921_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R921 (stmt->u.R921.params);
+         if (okay)
+           ffeste_R921 (stmt->u.R921.params);
          malloc_pool_kill (stmt->u.R921.pool);
          break;
 
        case FFESTD_stmtidR923A_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.R921.pool);
          break;
 
        case FFESTD_stmtidR923A_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R923A (stmt->u.R923A.params, stmt->u.R923A.by_file);
+         if (okay)
+           ffeste_R923A (stmt->u.R923A.params, stmt->u.R923A.by_file);
          malloc_pool_kill (stmt->u.R923A.pool);
          break;
 
        case FFESTD_stmtidR923B_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.R923A.pool);
          break;
 
        case FFESTD_stmtidR923B_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R923B_start (stmt->u.R923B.params);
+         if (okay)
+           ffeste_R923B_start (stmt->u.R923B.params);
          for (expr = stmt->u.R923B.list; expr != NULL; expr = expr->next)
          for (expr = stmt->u.R923B.list; expr != NULL; expr = expr->next)
-           ffeste_R923B_item (expr->expr);
-         ffeste_R923B_finish ();
+           {
+             if (okay)
+               ffeste_R923B_item (expr->expr);
+           }
+         if (okay)
+           ffeste_R923B_finish ();
          malloc_pool_kill (stmt->u.R923B.pool);
          break;
 
        case FFESTD_stmtidR1001_:
          malloc_pool_kill (stmt->u.R923B.pool);
          break;
 
        case FFESTD_stmtidR1001_:
-         ffeste_R1001 (&stmt->u.R1001.str);
+         if (okay)
+           ffeste_R1001 (&stmt->u.R1001.str);
          ffests_kill (&stmt->u.R1001.str);
          break;
 
        case FFESTD_stmtidR1103_:
          ffests_kill (&stmt->u.R1001.str);
          break;
 
        case FFESTD_stmtidR1103_:
-         ffeste_R1103 ();
+         if (okay)
+           ffeste_R1103 ();
          break;
 
        case FFESTD_stmtidR1112_:
          break;
 
        case FFESTD_stmtidR1112_:
-         ffeste_R1112 ();
+         if (okay)
+           ffeste_R1112 ();
          break;
 
        case FFESTD_stmtidR1212_:
          ffestd_subr_line_restore_ (stmt);
          break;
 
        case FFESTD_stmtidR1212_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R1212 (stmt->u.R1212.expr);
+         if (okay)
+           ffeste_R1212 (stmt->u.R1212.expr);
          malloc_pool_kill (stmt->u.R1212.pool);
          break;
 
        case FFESTD_stmtidR1221_:
          malloc_pool_kill (stmt->u.R1212.pool);
          break;
 
        case FFESTD_stmtidR1221_:
-         ffeste_R1221 ();
+         if (okay)
+           ffeste_R1221 ();
          break;
 
        case FFESTD_stmtidR1225_:
          break;
 
        case FFESTD_stmtidR1225_:
-         ffeste_R1225 ();
+         if (okay)
+           ffeste_R1225 ();
          break;
 
        case FFESTD_stmtidR1226_:
          ffestd_subr_line_restore_ (stmt);
          if (stmt->u.R1226.entry != NULL)
          break;
 
        case FFESTD_stmtidR1226_:
          ffestd_subr_line_restore_ (stmt);
          if (stmt->u.R1226.entry != NULL)
-           ffeste_R1226 (stmt->u.R1226.entry);
+           {
+             if (okay)
+               ffeste_R1226 (stmt->u.R1226.entry);
+           }
          break;
 
        case FFESTD_stmtidR1227_:
          ffestd_subr_line_restore_ (stmt);
          break;
 
        case FFESTD_stmtidR1227_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_R1227 (stmt->u.R1227.block, stmt->u.R1227.expr);
+         if (okay)
+           ffeste_R1227 (stmt->u.R1227.block, stmt->u.R1227.expr);
          malloc_pool_kill (stmt->u.R1227.pool);
          break;
 
 #if FFESTR_VXT
        case FFESTD_stmtidV018_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.R1227.pool);
          break;
 
 #if FFESTR_VXT
        case FFESTD_stmtidV018_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_V018_start (stmt->u.V018.params, stmt->u.V018.format);
+         if (okay)
+           ffeste_V018_start (stmt->u.V018.params, stmt->u.V018.format);
          for (expr = stmt->u.V018.list; expr != NULL; expr = expr->next)
          for (expr = stmt->u.V018.list; expr != NULL; expr = expr->next)
-           ffeste_V018_item (expr->expr);
-         ffeste_V018_finish ();
+           {
+             if (okay)
+               ffeste_V018_item (expr->expr);
+           }
+         if (okay)
+           ffeste_V018_finish ();
          malloc_pool_kill (stmt->u.V018.pool);
          break;
 
        case FFESTD_stmtidV019_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.V018.pool);
          break;
 
        case FFESTD_stmtidV019_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_V019_start (stmt->u.V019.params, stmt->u.V019.format);
+         if (okay)
+           ffeste_V019_start (stmt->u.V019.params, stmt->u.V019.format);
          for (expr = stmt->u.V019.list; expr != NULL; expr = expr->next)
          for (expr = stmt->u.V019.list; expr != NULL; expr = expr->next)
-           ffeste_V019_item (expr->expr);
-         ffeste_V019_finish ();
+           {
+             if (okay)
+               ffeste_V019_item (expr->expr);
+           }
+         if (okay)
+           ffeste_V019_finish ();
          malloc_pool_kill (stmt->u.V019.pool);
          break;
 #endif
 
        case FFESTD_stmtidV020_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.V019.pool);
          break;
 #endif
 
        case FFESTD_stmtidV020_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_V020_start (stmt->u.V020.params, stmt->u.V020.format);
+         if (okay)
+           ffeste_V020_start (stmt->u.V020.params, stmt->u.V020.format);
          for (expr = stmt->u.V020.list; expr != NULL; expr = expr->next)
          for (expr = stmt->u.V020.list; expr != NULL; expr = expr->next)
-           ffeste_V020_item (expr->expr);
-         ffeste_V020_finish ();
+           {
+             if (okay)
+               ffeste_V020_item (expr->expr);
+           }
+         if (okay)
+           ffeste_V020_finish ();
          malloc_pool_kill (stmt->u.V020.pool);
          break;
 
 #if FFESTR_VXT
        case FFESTD_stmtidV021_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.V020.pool);
          break;
 
 #if FFESTR_VXT
        case FFESTD_stmtidV021_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_V021 (stmt->u.V021.params);
+         if (okay)
+           ffeste_V021 (stmt->u.V021.params);
          malloc_pool_kill (stmt->u.V021.pool);
          break;
 
        case FFESTD_stmtidV023_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.V021.pool);
          break;
 
        case FFESTD_stmtidV023_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_V023_start (stmt->u.V023.params);
+         if (okay)
+           ffeste_V023_start (stmt->u.V023.params);
          for (expr = stmt->u.V023.list; expr != NULL; expr = expr->next)
          for (expr = stmt->u.V023.list; expr != NULL; expr = expr->next)
-           ffeste_V023_item (expr->expr);
-         ffeste_V023_finish ();
+           {
+             if (okay)
+               ffeste_V023_item (expr->expr);
+           }
+         if (okay)
+           ffeste_V023_finish ();
          malloc_pool_kill (stmt->u.V023.pool);
          break;
 
        case FFESTD_stmtidV024_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.V023.pool);
          break;
 
        case FFESTD_stmtidV024_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_V024_start (stmt->u.V024.params);
+         if (okay)
+           ffeste_V024_start (stmt->u.V024.params);
          for (expr = stmt->u.V024.list; expr != NULL; expr = expr->next)
          for (expr = stmt->u.V024.list; expr != NULL; expr = expr->next)
-           ffeste_V024_item (expr->expr);
-         ffeste_V024_finish ();
+           {
+             if (okay)
+               ffeste_V024_item (expr->expr);
+           }
+         if (okay)
+           ffeste_V024_finish ();
          malloc_pool_kill (stmt->u.V024.pool);
          break;
 
        case FFESTD_stmtidV025start_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.V024.pool);
          break;
 
        case FFESTD_stmtidV025start_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_V025_start ();
+         if (okay)
+           ffeste_V025_start ();
          break;
 
        case FFESTD_stmtidV025item_:
          break;
 
        case FFESTD_stmtidV025item_:
-         ffeste_V025_item (stmt->u.V025item.u, stmt->u.V025item.m,
-                           stmt->u.V025item.n, stmt->u.V025item.asv);
+         if (okay)
+           ffeste_V025_item (stmt->u.V025item.u, stmt->u.V025item.m,
+                             stmt->u.V025item.n, stmt->u.V025item.asv);
          break;
 
        case FFESTD_stmtidV025finish_:
          break;
 
        case FFESTD_stmtidV025finish_:
-         ffeste_V025_finish ();
+         if (okay)
+           ffeste_V025_finish ();
          malloc_pool_kill (stmt->u.V025finish.pool);
          break;
 
        case FFESTD_stmtidV026_:
          ffestd_subr_line_restore_ (stmt);
          malloc_pool_kill (stmt->u.V025finish.pool);
          break;
 
        case FFESTD_stmtidV026_:
          ffestd_subr_line_restore_ (stmt);
-         ffeste_V026 (stmt->u.V026.params);
+         if (okay)
+           ffeste_V026 (stmt->u.V026.params);
          malloc_pool_kill (stmt->u.V026.pool);
          break;
 #endif
          malloc_pool_kill (stmt->u.V026.pool);
          break;
 #endif
@@ -3516,9 +3604,22 @@ ffestd_R842 (ffebld expr)
     stmt = ffestd_stmt_new_ (FFESTD_stmtidR842_);
     ffestd_stmt_append_ (stmt);
     ffestd_subr_line_save_ (stmt);
     stmt = ffestd_stmt_new_ (FFESTD_stmtidR842_);
     ffestd_stmt_append_ (stmt);
     ffestd_subr_line_save_ (stmt);
-    stmt->u.R842.pool = ffesta_output_pool;
-    stmt->u.R842.expr = expr;
-    ffesta_set_outpooldisp (FFESTA_pooldispPRESERVE);
+    if (ffesta_outpooldisp () == FFESTA_pooldispPRESERVE)
+      {
+       /* This is a "spurious" (automatically-generated) STOP
+          that follows a previous STOP or other statement.
+          Make sure we don't have an expression in the pool,
+          and then mark that the pool has already been killed.  */
+       assert (expr == NULL);
+       stmt->u.R842.pool = NULL;
+       stmt->u.R842.expr = NULL;
+      }
+    else
+      {
+       stmt->u.R842.pool = ffesta_output_pool;
+       stmt->u.R842.expr = expr;
+       ffesta_set_outpooldisp (FFESTA_pooldispPRESERVE);
+      }
   }
 #endif
 
   }
 #endif
 
index 1adcc0d582ac925697315d1d526c57704b1dabc2..c66c0aaeed396c58bf9813c107573e4b3f45cb38 100644 (file)
@@ -5,6 +5,10 @@ Tue Dec 23 22:56:01 1997  Craig Burley  <burley@gnu.org>
        handler on 64-bit systems like Alphas.
        * f2cext.c (signal_): Changed accordingly.
 
        handler on 64-bit systems like Alphas.
        * f2cext.c (signal_): Changed accordingly.
 
+Wed Oct 29 01:01:04 1997  Mumit Khan  <khan@brahma.xraylith.wisc.edu>
+
+       * configure.in: Set CC to CC_FOR_TARGET when cross-compiling.
+
 Tue Sep 30 00:41:39 1997  Craig Burley  <burley@gnu.ai.mit.edu>
 
        Do a better job of printing the offending FORMAT string
 Tue Sep 30 00:41:39 1997  Craig Burley  <burley@gnu.ai.mit.edu>
 
        Do a better job of printing the offending FORMAT string
index 6bd6518e0765c4fa70da2672ba16e9f8bf28387d..f5b127ec2b31b1806dc2afd52f2e1203467c5c99 100644 (file)
@@ -23,15 +23,20 @@ AC_INIT(libF77/Version.c)
 
 AC_REVISION(1.10)
 
 
 AC_REVISION(1.10)
 
-dnl Checks for programs.
-# For g77 we'll set CC to point at the built gcc, but this will get it into
-# the makefiles
-AC_PROG_CC
 dnl AC_C_CROSS
 dnl Gives misleading `(cached)' message from the check.
 if test "$CROSS";then
 dnl AC_C_CROSS
 dnl Gives misleading `(cached)' message from the check.
 if test "$CROSS";then
+  if test "$CC_FOR_TARGET"; then
+    CC="$CC_FOR_TARGET"
+  else
+    CC="../../xgcc -B../../xgcc/"
+  fi
   ac_cv_c_cross=yes
 else
   ac_cv_c_cross=yes
 else
+  dnl Checks for programs.
+  # For g77 we'll set CC to point at the built gcc, but this will get it into
+  # the makefiles
+  AC_PROG_CC
   ac_cv_c_cross=no
 fi
 
   ac_cv_c_cross=no
 fi
 
index 93e9198ed0b31e72110a95794da9865af78f43ae..5c3af4c085409e7d87ba84f9906f6714419a3b7e 100644 (file)
@@ -75,9 +75,12 @@ f_exit(void)
        static cllist xx;
        if (! (f__init & 1))
                return;         /* Not initialized, so no open units. */
        static cllist xx;
        if (! (f__init & 1))
                return;         /* Not initialized, so no open units. */
-       /* no more I/O to be done. If this is not done, then if the
-          program is interrupted during I/O, f_clos thinks, incorrectly,
-          that there is an I/O recursion. */
+       /* I/O no longer in progress.  If, during an I/O operation (such
+          as waiting for the user to enter a line), there is an
+          interrupt (such as ^C to stop the program on a UNIX system),
+          f_exit() is called, but there is no longer any I/O in
+          progress.  Without turning off this flag, f_clos() would
+          think that there is an I/O recursion in this circumstance. */
        f__init &= ~2;
        if (!xx.cerr) {
                xx.cerr=1;
        f__init &= ~2;
        if (!xx.cerr) {
                xx.cerr=1;