Do not do src->dest copy if register would not be allocated a normal register
[official-gcc.git] / gcc / f / ChangeLog
blob8678e79d3a9177792458a51ad3b57e2f5811de5a
1 Sat Jun 13 03:13:18 1998  Craig Burley  <burley@gnu.org>
3         * g77spec.c (lang_specific_driver): Print out egcs
4         version info first, to be compatible with what some
5         test facilities expect.
7 Wed Jun 10 13:17:32 1998  Dave Brolley  <brolley@cygnus.com>
9         * top.h (ffe_decode_option): New argc/argv interface.
10         * top.c (ffe_decode_option): New argc/argv interface.
11         * parse.c (yyparse): New argc/argv interface for ffe_decode_option.
12         * com.c (lang_decode_option): New argc/argv interface.
14 Mon Jun  1 19:37:42 1998  Craig Burley  <burley@gnu.org>
16         * com.c (ffecom_init_0): Fix setup of INTEGER(KIND=7)
17         pointer type.
18         * info.c (ffeinfo_type): Don't crash on null type.
19         * expr.c (ffeexpr_fulfill_call_): Don't special-case
20         %LOC(expr) or LOC(expr).
21         Delete FFEGLOBAL_argsummaryPTR.
22         * global.c, global.h: Delete FFEGLOBAL_argsummaryPTR.
24 Thu May 28 21:32:18 1998  Craig Burley  <burley@gnu.org>
26         Restore circa-0.5.22 capabilities of `g77' driver:
27         * Make-lang.in (g77spec.o): Depend on f/version.h.
28         (g77version.o): New rule to compile g77 version info.
29         (g77$(exeext)): Depend on and link in g77version.o.
30         * g77spec.c: Rewrite to be more like 0.5.22 version
31         of g77.c, making filtering of command line smarter
32         so mixed Fortran and C (etc.) can be compiled, verbose
33         version info can be obtained, etc.
34         * lang-specs.h (f77-version): New "language" to support
35         "g77 -v" command under new gcc 2.8 regime.
36         * lex.c (ffelex_file_fixed): If -fnull-version, just
37         substitute a "source file" that prints out version info.
38         * top.c, top.h: Support -fnull-version.
40         * lang-specs.h: Use "%O" instead of OO macro to specify
41         object extension.  Remove old stringizing cruft.
43         * Make-lang.in (g77.c, g77spec.o, g77.o, g77$(exeext),
44         g77-cross$(exeext), f771,
45         $(srcdir)/f/g77.info, $(srcdir)/f/g77.dvi,
46         $(srcdir)/f/intdoc.texi,
47         f77.install-common, f77.install-info, f77.install-man,
48         f77.uninstall, $(G77STAGESTUFF), f77.stage1, f77.stage2,
49         f77.stage3, f77.stage4, f77.distdir): Don't do anything
50         unless user specified "f77" or "F77" in $LANGUAGES either
51         during configuration or explicitly.  For convenience of
52         various tests and to work around lack of the assignment
53         "LANGUAGES=$(BOOT_LANGUAGES)" in the "make stage1" command
54         of "make bootstrap" in gcc, use a touch file named "lang-f77"
55         to communicate whether this is the case.
57         * Make-lang.in (F77_FLAGS_TO_PASS): Delete this macro,
58         replace with minimal expansion of its former self in
59         each of the two instances where it was used.
61         * Makefile.in (HOST_CC): Delete this definition.
63         * com.c (index, rindex): Delete these declarations.
65         * proj.h: (isascii): Delete this.
67         * Make-lang.in (f77.install-common): Warn if `f77-install-ok'
68         flag-file exists, since it no longer triggers any activity.
70         Rename libf2c.a and f2c.h to libg2c.a and g2c.h,
71         normalize and simplify g77/libg2c build process:
72         * Make-lang.in: Remove all support for overwriting
73         /usr/bin/f77 etc., or whatever the actual names are
74         via $(prefix) and $(local_prefix).  (g++ overwrites
75         /usr/bin/c++, but then it's often the only C++ compiler
76         on the system; f77 often exists on systems that are
77         installing g77.)
78         (f77.realclean): Remove obsolete target.
79         (g77.c, g77$(exeext)): Minor changes to look more like g++'s
80         stuff.
81         (f771): Now built with srcdir=gcc/f, not srcdir=gcc, to be
82         more like g++ and such.
83         (f/Makefile): Removed, as g++ doesn't need this rule.
84         (f77.install-common): No longer install f77, etc.
85         (f77.install-man): No longer install f77.1.
86         (f77.uninstall): No longer uninstall f77, f77.1, etc.
87         (f77.stage1, f77.stage2, f77.stage3, f77.stage4): Do work
88         only if "f77" appears in $(LANGUAGES).
89         (Note: gcc's Makefile.in's bootstrap target should set
90         LANGUAGES=$(BOOT_LANGUAGES) when making the stage1 target.)
91         * Makefile.in: Update vis-a-vis gcc/cp/Makefile.in.
92         (none): Remove.
93         (g77-only): Relocate.
94         (all.indirect, f771, *.o): Now assumes current directory
95         is this dir (gcc/f), not the parent directory.
96         (TAGS): Remove "echo 'parse.y,0'  >> TAGS ;" line.
97         * config-lang.in: Delete commented-out code.
98         Fix stagestuff definition.  Add more stuff to
99         diff_excludes definition.  Don't create any directories.
100         Set outputs to f/Makefile, to get variable substition
101         to happen (what does that really do, anyway?!).
102         * g77spec.c: Rename libf2c to libg2c.
104         * com.h: Remove all of the gcc back-end decls,
105         since egcs should have all of them correct.
107         * com.c: Include "proj.h" before anything else,
108         as that's how things are supposed to work.
109         * ste.c: Ditto.
111         * bad.c: Include "flags.j" here, since some diagnostics
112         check flag_pedantic_errors.
114         * Makefile.in (f/*.o): Rebuild dependencies via
115         deps-kinda.
117         * output.j: New source file.
118         * Make-lang.in (F77_SRCS): Update accordingly.
119         * Makefile.in (OUTPUT_H): Ditto.
120         (deps-kinda): Ditto.
121         * com.c: Include "output.j" here.
122         * lex.c: Ditto.
124 Mon May 25 03:34:42 1998  Craig Burley  <burley@gnu.org>
126         * com.c (ffecom_expr_): Fix D**I and Z**I cases to
127         not convert (DOUBLE PRECISION) D and (DOUBLE COMPLEX) Z
128         to INTEGER.  (This is dead code here anyway.)
130 Sat May 23 06:32:52 1998  Craig Burley  <burley@gnu.org>
132         * com.c (ffecom_finish_symbol_transform_): Don't transform
133         statement (nested) functions, to avoid gcc compiling them
134         and thus producing linker errors if they refer to undefined
135         external functions.  But warn if they're unused and -Wunused.
136         * bad.def (FFEBAD_SFUNC_UNUSED): New diagnostic.
138 Tue May 19 14:52:41 1998  Craig Burley  <burley@gnu.org>
140         * bad.def (FFEBAD_OPEN_UNSUPPORTED, FFEBAD_INQUIRE_UNSUPPORTED,
141         FFEBAD_READ_UNSUPPORTED, FFEBAD_WRITE_UNSUPPORTED,
142         FFEBAD_QUAD_UNSUPPORTED, FFEBAD_BLOCKDATA_STMT,
143         FFEBAD_TRUNCATING_CHARACTER, FFEBAD_TRUNCATING_HOLLERITH,
144         FFEBAD_TRUNCATING_NUMERIC, FFEBAD_TRUNCATING_TYPELESS,
145         FFEBAD_TYPELESS_OVERFLOW): Change these from warnings
146         to errors.
148 Tue May 19 14:51:59 1998  Craig Burley  <burley@gnu.org>
150         * Make-lang.in (f77.install-info, f77.uninstall):
151         Use install-info as appropriate.
153 Tue May 19 12:56:54 1998  Craig Burley  <burley@gnu.org>
155         * com.c (ffecom_init_0): Rename xargc to f__xargc,
156         in accord with same-dated change to f/runtime.
158 Fri May 15 10:52:49 1998  Craig Burley  <burley@gnu.org>
160         * com.c (ffecom_convert_narrow_, ffecom_convert_widen_):
161         Be even more persnickety in checking for internal bugs.
162         Also, if precision isn't changing, just return the expr.
164         * expr.c (ffeexpr_token_number_): Call
165         ffeexpr_make_float_const_ to make an integer.
166         (ffeexpr_make_float_const_): Handle making an integer.
168         * intrin.c (ffeintrin_init_0): Distinguish between
169         crashes on bad arg base and kind types.
171 Thu May 14 13:30:59 1998  Craig Burley  <burley@gnu.org>
173         * Make-lang.in (f/expr.c): Now depends on f/stamp-str.
174         * expr.c: Use ffestrOther in place of ffeexprDotdot_.
175         * str-ot.fin: Add more keywords for expr.c.
177         * intdoc.c (dumpimp): Trivial fix.
179         * com.c (ffecom_expr_): Add ltkt variable for clarity.
181 Wed May 13 13:05:34 1998  Craig Burley  <burley@gnu.org>
183         * Make-lang.in (G77STAGESTUFF): Add g77.o, g77spec.o,
184         and g77version.o.
185         (f77.clean): Add removal of g77.c, g77.o, g77spec.o,
186         and g77version.o.
187         (f77.distclean): Delete removal of g77.c.
189 Tue Apr 28 09:23:10 1998  Craig Burley  <burley@gnu.org>
191         Fix 980427-0.f:
192         * global.c (ffeglobal_ref_progunit_): When transitioning
193         from EXT to FUNC, discard hook, since the decl, if any, is
194         probably wrong.
196 Sun Apr 26 09:05:50 1998  Craig Burley  <burley@gnu.org>
198         * com.c (ffecom_char_enhance_arg_): Wrap the upper bound
199         (the PARM_DECL specifying the length of the CHARACTER*(*)
200         dummy arg) in a variable_size invocation, to prevent
201         dwarf2out.c crashing when compiling code with -g.
203 Sat Apr 18 05:03:21 1998  Craig Burley  <burley@gnu.org>
205         * com.c (ffecom_check_size_overflow_): Ignore overflow
206         as well if dummy argument.
208 Fri Apr 17 17:18:04 1998  Craig Burley  <burley@gnu.org>
210         * version.h: Get rid of the overly large headers
211         here too, as done in version.c.
213 Tue Apr 14 14:40:40 1998  Craig Burley  <burley@gnu.org>
215         * com.c (ffecom_start_progunit_): Mark function decl
216         as used, to avoid spurious warning (-Wunused) for ENTRY.
218 Tue Apr 14 14:19:34 1998  Craig Burley  <burley@gnu.org>
220         * sta.c (ffesta_second_): Check for CASE DEFAULT
221         as well as CASE, or it won't be recognized.
223 Mon Mar 23 21:20:35 1998  Craig Burley  <burley@gnu.org>
225         * version.c: Reduce to a one-line file, like
226         gcc's version.c, since there's really no content
227         there.
229 Mon Mar 23 11:58:43 1998  Craig Burley  <burley@gnu.org>
231         * bugs.texi: Various updates.
233         * com.c (ffecom_tree_canonize_ptr_): Fix up spacing a bit.
235 Mon Mar 16 21:20:35 1998  Craig Burley  <burley@gnu.org>
237         * expr.c (ffeexpr_sym_impdoitem_): Don't blindly
238         reset symbol info after calling ffesymbol_error,
239         to avoid crash.
241 Thu Mar 12 13:50:21 1998  Craig Burley  <burley@gnu.org>
243         * lang-options.h: Sort all -f*-intrinsics-* options,
244         for consistency with other g77 versions.
246 Mon Mar 16 15:38:50 1998  Craig Burley  <burley@gnu.org>
248         * Version 0.5.22 released.
250 Mon Mar 16 14:36:02 1998  Craig Burley  <burley@gnu.org>
252         Make -g work better for ENTRY:
253         * com.c (ffecom_start_progunit_): Master function
254         for ENTRY-laden procedure is not really invented,
255         so it can be debugged.
256         (ffecom_do_entry_): Push/set/pop lineno for each
257         entry point.
259 Sun Mar 15 05:48:49 1998  Craig Burley  <burley@gnu.org>
261         * intrin.def: Fix spelling of mixed-case form
262         of `CPU_Time' (was `Cpu_Time').
264 1998-03-09  Dave Love  <d.love@dl.ac.uk>
266         * Make-lang.in: Set CONFIG_SITE to a non-existent file since
267         /dev/null loses with bash 2.0/autoconf 2.12.  Put
268         F77_FLAGS_TO_PASS before CC.
270 Sun Mar  8 16:35:34 1998  Craig Burley  <burley@gnu.org>
272         * intrin.def: Use tabs instead of blanks more
273         consistently (excepting DEFGEN section for now).
275 Sat Feb 28 15:24:38 1998  Craig Burley  <burley@gnu.org>
277         * intrin.def: Make CPU_TIME's arg generic real to be just
278         like SECOND_subr.
280 Fri Feb 20 12:45:53 1998  Craig Burley  <burley@gnu.org>
282         * expr.c (ffeexpr_token_arguments_): Make sure
283         outer exprstack isn't null.
285 1998-02-16  Dave Love  <d.love@dl.ac.uk>
287         * Makefile.in (f/fini): Don't use -W -Wall with HOST_CC.
289 Sun Jan 11 02:14:47 1998  Craig Burley  <burley@gnu.org>
291         Support FORMAT(I<1+2>) (constant variable-FORMAT
292         expressions):
293         * bad.def (FFEBAD_FORMAT_VARIABLE): New diagnostic.
294         * std.c (ffestd_R1001rtexpr_): New function.
295         (ffestd_R1001dump_, ffestd_R1001dump_1005_1_,
296         ffestd_R1001dump_1005_2_, ffestd_R1001dump_1005_3_,
297         ffestd_R1001dump_1005_4_, ffestd_R1001dump_1005_5_,
298         ffestd_R1001dump_1010_2_, ffestd_R1001dump_1010_3_,
299         ffestd_R1001dump_1010_4_, ffestd_R1001dump_1010_5_):
300         Use new function instead of ffestd_R1001error_.
302         * stb.c (ffestb_R10014_, ffestb_R10016_, ffestb_R10018_,
303         ffestb_R100110_): Restructure `for' loop for style.
305         Fix 970626-2.f by not doing most back-end processing
306         when current_function_decl is an ERROR_MARK, and by
307         making that the case when its type would be an ERROR_MARK:
308         * com.c (ffecom_start_progunit_, finish_function,
309         lang_printable_name, start_function,
310         ffecom_finish_symbol_transform_): Test for ERROR_MARK.
311         * std.c (ffestd_stmt_pass_): Don't do any downstream
312         processing if ERROR_MARK.
314         * Make-lang.in (f77.install-common): Don't install, and
315         don't uninstall existing, Info files if f/g77.info
316         doesn't exit.  (This is a somewhat modified version
317         of an egcs patch on 1998-01-07 12:05:51 by Bruno Haible
318         <bruno@linuix.mathematik.uni-karlsruhe.de>.)
320 Fri Jan  9 19:09:07 1998  Craig Burley  <burley@gnu.org>
322         Fix -fpedantic combined with `F()' invocation,
323         also -fugly-comma combined with `IARGC()' invocation:
324         * bad.def (FFEBAD_NULL_ARGUMENT_W): New diagnostic.
325         * expr.c (ffeexpr_finished_): Don't reject null expressions
326         in the argument-expression context -- let outer context
327         handle that.
328         (ffeexpr_token_arguments_): Warn about null expressions
329         here if -fpedantic (as appropriate).
330         Obey -fugly-comma for only external-procedure invocations.
331         * intrin.c (ffeintrin_check_): No longer ignore explicit
332         omitted trailing args.
334 Tue Dec 23 14:58:04 1997  Craig Burley  <burley@gnu.org>
336         * intrin.c (ffeintrin_fulfill_generic): Don't generate
337         FFEBAD_INTRINSIC_TYPE for CHARACTER*(*) intrinsic.
339         * com.c (ffecom_gfrt_basictype):
340         (ffecom_gfrt_kindtype):
341         (ffecom_make_gfrt_):
342         (FFECOM_rttypeVOIDSTAR_): New return type `void *', for
343         the SIGNAL intrinsic.
344         * com-rt.def (FFECOM_rttypeSIGNAL): Now returns `void *'.
345         * intdoc.c: Replace `p' kind specifier with `7'.
346         * intrin.c (ffeintrin_check_, ffeintrin_init_0): Replace
347         `p' kind specifier with `7'.
348         * intrin.def (FFEINTRIN_impLOC, FFEINTRIN_impSIGNAL_func,
349         FFEINTRIN_impSIGNAL_subr): Replace `p' specifier with `7'.
350         Also, SIGNAL now returns a `void *' status, not `int'.
352         Improve run-time diagnostic for "PRINT '(I1', 42":
353         * com.c (ffecom_char_args_x_): Renamed from ffecom_char_args_,
354         which is now a macro (to avoid lots of changes to other code)
355         with new arg, ffecom_char_args_with_null_ being another new
356         macro to call same function with different value for new arg.
357         This function now appends a null byte to opCONTER expression
358         if the new arg is TRUE.
359         (ffecom_arg_ptr_to_expr): Support NULL length pointer.
360         * ste.c (ffeste_io_cilist_):
361         (ffeste_io_icilist_): Pass NULL length ptr for
362         FORMAT expression, so null byte gets appended where
363         feasible.
364         * target.c (ffetarget_character1):
365         (ffetarget_concatenate_character1):
366         (ffetarget_substr_character1):
367         (ffetarget_convert_character1_character1):
368         (ffetarget_convert_character1_hollerith):
369         (ffetarget_convert_character1_integer4):
370         (ffetarget_convert_character1_logical4):
371         (ffetarget_convert_character1_typeless):
372         (ffetarget_hollerith): Append extra phantom null byte as
373         part of FFETARGET-NULL-BYTE kludge.
375         * intrin.def (FFEINTRIN_impCPU_TIME): Point to
376         FFECOM_gfrtSECOND as primary run-time routine.
378 Mon Dec 22 12:41:07 1997  Craig Burley  <burley@gnu.org>
380         * intrin.c (ffeintrin_init_0): Remove duplicate
381         check for `!'.
383 Sun Dec 14 02:49:58 1997  Craig Burley  <burley@gnu.org>
385         * intrin.c (ffeintrin_init_0): Fix up indentation a bit.
386         Fix bug that prevented checking of arguments other
387         than the first.
389         * intdoc.c: Fix up indentation a bit.
391 Tue Dec  9 16:20:57 1997  Richard Henderson  <rth@cygnus.com>
393         * com.c (ffecom_type_vardesc_): Vardesc.dims is a `ftnlen*'.
395 Mon Dec  1 19:12:36 1997  Craig Burley  <burley@gnu.org>
397         * intrin.c (ffeintrin_check_): Fix up indentation a bit more.
399 Mon Dec  1 16:21:08 1997  Craig Burley  <burley@gnu.org>
401         * com.c (ffecom_arglist_expr_): Crash if non-supplied
402         optional arg isn't passed as an address.
403         Pass null pointer explicitly, instead of via ffecom routine.
404         If incoming argstring is NULL, substitute pointer to "0".
405         Recognize '0' as ending the usual arg stuff, just like '\0'.
407 Sun Nov 30 22:22:22 1997  Craig Burley  <burley@gnu.org>
409         * intdoc.c: Minor fix-ups.
411         * intrin.c (ffeintrin_check_): Fix up indentation a bit.
413         * intrin.def: Fix up spacing a bit.
415 1997-11-17  Dave Love  <d.love@dl.ac.uk>
417         * com.c (ffecom_arglist_expr_): Pass null pointers for optional
418         args which aren't supplied.
420 Sun Nov 16 21:45:43 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
422         * Make-lang.in (f77.install-info): Depend on f77.info.
424 1997-11-06  Dave Love  <d.love@dl.ac.uk>
426         * intrin.def: Allow non-integer args for INT2 and INT8 (per
427         documentation).
429 Tue Oct 28 02:21:25 1997  Craig Burley  <burley@gnu.ai.mit.edu>
431         * lang-options.h: Add -fgnu-intrinsics-* and
432         -fbadu77-intrinsics-* options.
434 Sun Oct 26 02:36:21 1997  Craig Burley  <burley@gnu.ai.mit.edu>
436         * com.c (lang_print_error_function): Fix to more
437         reliably notice when the diagnosed region changes.
439 Sat Oct 25 23:43:36 1997  Craig Burley  <burley@gnu.ai.mit.edu>
441         Fix 950327-0.f:
442         * sta.c, sta.h (ffesta_outpooldisp): New function.
443         * std.c (ffestd_stmt_pass_): Don't kill NULL pool.
444         (ffestd_R842): If pool already preserved, save NULL
445         for pool, because it should be killed only once.
447         * malloc.c [MALLOC_DEBUG]: Put initializer for `name'
448         component in braces, to avoid compiler warning.
450 Fri Oct 10 13:00:48 1997  Craig Burley  <burley@gnu.ai.mit.edu>
452         * ste.c (ffeste_begin_iterdo_): Fix loop setup so iteration
453         variable is modified only after the #iterations is calculated;
454         otherwise if the iteration variable is aliased to any of the
455         operands in the start, end, or increment expressions, the
456         wrong #iterations might be calculated.
458         * com.c (ffecom_save_tree): Fix indentation.
460 1997-10-05  Dave Love  <d.love@dl.ac.uk>
462         * intrin.def: Make SECOND_subr's arg generic real for people
463         porting from Cray and making everything double precision.
465 Mon Sep 29 16:18:21 1997  Craig Burley  <burley@gnu.ai.mit.edu>
467         * stu.c (ffestu_list_exec_transition_,
468         ffestu_dummies_transition_): Specify `bool' type for
469         `in_progress' variables.
471         * com.h (assemble_string): Declare this routine (instead
472         of #include'ing "output.h" from gcc) to eliminate warnings
473         from lex.c.
475 Fri Sep 19 01:12:27 1997  Craig Burley  <burley@gnu.ai.mit.edu>
477         * expr.c (ffeexpr_reduced_eqop2_): 
478         (ffeexpr_reduced_relop2_): Minor fixes to diagnostic code.
480         * fini.c (main): Change return type to `int'.
482 Wed Sep 17 10:47:08 1997  Craig Burley  <burley@gnu.ai.mit.edu>
484         * com-rt.def (FFECOM_gfrtDSIGN, FFECOM_gfrtISIGN,
485         FFECOM_gfrtSIGN): Add second argument.
487         * expr.c (ffeexpr_cb_comma_c_): Trivial fixes.
489 Tue Sep  9 01:59:35 1997  Craig Burley  <burley@gnu.ai.mit.edu>
491         * Version 0.5.21 released.
493 Tue Sep  9 00:31:01 1997  Craig Burley  <burley@gnu.ai.mit.edu>
495         * intdoc.c (dumpem): Put appropriate commentary in
496         output file, so readers know it isn't source.
498 Wed Aug 27 08:08:25 1997  Craig Burley  <burley@gnu.ai.mit.edu>
500         * proj.h: Always #include "config.j" first, to pick up
501         gcc's configuration.
502         * com.c: Change bcopy() and bzero() calls to memcpy()
503         and memset() calls, to make more of g77 ANSI C.
505 1997-08-26  Dave Love  <d.love@dl.ac.uk>
507         * Make-lang.in ($(srcdir)/f/runtime/configure,
508         $(srcdir)/f/runtime/libU77/configure): Fix for when srcdir isn't
509         relative.
511 Tue Aug 26 05:59:21 1997  Craig Burley  <burley@gnu.ai.mit.edu>
513         * ansify.c (main): Make sure readers of stdout know
514         it's derived from stdin; omit comment text; get source
515         line numbers in future stderr output to be correct.
517 Tue Aug 26 01:36:01 1997  Craig Burley  <burley@gnu.ai.mit.edu>
519         Fix 970825-0.f:
520         * stb.c (ffestb_R5284_): Allow OPEN_PAREN after closing
521         SLASH as well as NAME.
523 Mon Aug 25 23:48:17 1997  Craig Burley  <burley@gnu.ai.mit.edu>
525         Changes to allow g77 docs to be built entirely from scratch
526         using any ANSI C compiler, not requiring GNU C:
527         * Make-lang.in ($(srcdir)/f/intdoc.texi): "Pipe" new
528         location of intrinsic documentation data base, f/intdoc.in,
529         through new `ansify' program to append `\n\' to quoted
530         newlines, into f/intdoc.h0.  Do appropriate cleanups.  Explain.
531         (f77.mostlyclean): Add f/ansify and f/intdoc.h0 to cleanups.
532         * f/ansify.c: New program.
533         * f/intdoc.c: Fix so it conforms to ANSI C.
534         #include f/intdoc.h0 instead of f/intdoc.h.
535         Avoid some warnings.
536         * f/intdoc.h, f/intdoc.in: Rename the former to the latter; no
537         changes made to the content in this patch!
538         * f/intrin.h (ffeintrinFamily): Fix to conform to ANSI C.
540 Sun Aug 24 06:52:48 1997  Craig Burley  <burley@gnu.ai.mit.edu>
542         Fix up g77 compiler data base for libf2c routines:
543         * com-rt.def (FFECOM_gfrtSIGNAL): Change return type to
544         FTNINT to match actual code.
546         * com.c (ffecomRttype_): Replace FFECOM_rttypeINT_ with
547         FFECOM_rttypeFTNINT_.
548         Add and fix up comments.
549         (ffecom_make_gfrt_, ffecom_gfrt_basictype,
550         ffecom_gfrt_kindtype): Replace FFECOM_rttypeINT_ with
551         FFECOM_rttypeFTNINT_; add FFECOM_rttypeDOUBLEREAL_.
553 Wed Aug 20 17:18:40 1997  Craig Burley  <burley@gnu.ai.mit.edu>
555         * global.c (ffeglobal_ref_progunit_): It's okay to have
556         a different CHARACTER*n length for a reference if the
557         existing length is for another reference, not a definition.
559 Mon Aug 18 14:27:18 1997  Craig Burley  <burley@gnu.ai.mit.edu>
561         Fix 970814-0.f:
562         * global.c (ffeglobal_new_progunit_): Distinguish
563         between previously defined, versus inferred, filewide
564         when it comes to diagnostics.
566         Fix 970816-1.f:
567         * global.c (ffeglobal_ref_progunit_): Change BDATA into EXT
568         right at the beginning, so EXTERNAL FOO followed later
569         by SUBROUTINE FOO is not diagnosed.
571         Fix 970813-0.f:
572         * com-rt.def (FFECOM_gfrtALARM): Returns `integer', not
573         `void'.
575 Sun Aug 17 03:32:44 1997  Craig Burley  <burley@gnu.ai.mit.edu>
577         Fix up problems when virtual memory exhausted:
578         * malloc.c (malloc_new_): Use gcc's xmalloc(), so we
579         print a nicer message when malloc returns no memory.
580         (malloc_resize_): Ditto for xrealloc().
582         * Make-lang.in, Makefile.in: Comment out lines containing
583         just formfeeds.
585 Sat Aug 16 19:41:33 1997  Craig Burley  <burley@gnu.ai.mit.edu>
587         * com.c (ffecom_make_gfrt_): For rttypeREAL_F2C_, return
588         double_type_node; for rttypeREAL_GNU_, return
589         _real_type_node.
591 1997-08-13  Dave Love  <d.love@dl.ac.uk>
593         * config-lang.in (diff_excludes): Add some hints about known
594         problematic platforms.
596 1997-08-13  Dave Love  <d.love@dl.ac.uk>
598         * intdoc.h: Document `alarm'.
600 Mon Aug 11 21:19:22 1997  Craig Burley  <burley@gnu.ai.mit.edu>
602         * Make-lang.in ($(RUNTIMESTAGESTUFF)): Add
603         f/runtime/stamp-lib.
605 Mon Aug 11 01:52:03 1997  Craig Burley  <burley@gnu.ai.mit.edu>
607         * com.c (ffecom_build_complex_constant_): Go with the
608         new build_complex() approach used in gcc-2.8.
610         * com.c (ffecom_sym_transform_): Don't set
611         DECL_IN_SYSTEM_HEADER for a tree node that isn't
612         a VAR_DECL, which happens when var is in common!
614         * com.c (ffecom_expr_intrinsic_) (case FFEINTRIN_impALARM):
615         No need to test codegen_imp -- there's only one valid here.
617         * intrin.def (FFEINTRIN_impALARM): Specify `Status' argument
618         as write-only.
620 Fri Aug  8 05:40:23 1997  Craig Burley  <burley@gnu.ai.mit.edu>
622         Substantial changes to accommodate distinctions among
623         run-time routines that support intrinsics, and between
624         routines that compute and return the same type vs. those
625         that compute one type and return another (or `void'):
626         * com-rt.def: Specify new return type REAL_F2C_ instead
627         of many DOUBLE_, COMPLEX_F2C_ instead of COMPLEX_, and
628         so on.
629         Clear up the *BES* routines "once and for all".
630         * com.c: New return types.
631         (ffecom_convert_narrow_, ffecom_convert_widen_):
632         New functions that are "safe" variants of convert(),
633         to catch errors that ffecom_expr_intrinsic_() now
634         no longer catches.
635         (ffecom_arglist_expr_): Ensure arguments are not
636         converted to narrower types.
637         (ffecom_call_): Ensure return value is not converted
638         to a wider type.
639         (ffecom_char_args_): Use new ffeintrin_gfrt_direct()
640         routine.
641         (ffecom_expr_intrinsic_): Simplify how run-time
642         routine is selected (via `gfrt' only now; lose the
643         redundant `ix' variable).
644         Eliminate the `library' label; any code that doesn't
645         return directly just `break's out now with `gfrt'
646         set appropriately.
647         Set `gfrt' to default choice initially, either a
648         fast direct form or, if not available, a slower
649         indirect-callable form.
650         (ffecom_make_gfrt_): No longer need to do special
651         check for complex; it's built into the new return-type
652         regime.
653         (ffecom_ptr_to_expr): Use new ffeintrin_gfrt_indirect()
654         routine.
655         * intrin.c, intrin.h: `gfrt' field replaced with three fields,
656         so it is easier to provide faster direct-callable and
657         GNU-convention indirect-callable routines in the future.
658         DEFIMP macro adjusted accordingly, along with all its uses.
659         (ffeintrin_gfrt_direct): New function.
660         (ffeintrin_gfrt_indirect): Ditto.
661         (ffeintrin_is_actualarg): If `-fno-f2c' is in effect,
662         require a GNU-callable version of intrinsic instead of
663         an f2c-callable version, so indirect calling is still checked.
664         * intrin.def: Replace one GFRT field with the three new fields,
665         as appropriate for each DEFIMP intrinsic.
667         * com.c (ffecom_stabilize_aggregate_,
668         ffecom_convert_to_complex_): Make these `static'.
670 Thu Aug  7 11:24:34 1997  Craig Burley  <burley@gnu.ai.mit.edu>
672         Provide means for front end to determine actual
673         "standard" return type for an intrinsic if it is
674         passed as an actual argument:
675         * com.h, com.c (ffecom_gfrt_basictype,
676         ffecom_gfrt_kindtype): New functions.
677         (ffecom_gfrt_kind_type_): Replaced with new function.
678         All callers updated.
679         (ffecom_make_gfrt_): No longer need do anything
680         with kind type.
682         * intrin.c (ffeintrin_basictype, ffeintrin_kindtype):
683         Now returns correct type info for specific intrinsic
684         (based on type of run-time-library implementation).
686 Wed Aug  6 23:08:46 1997  Craig Burley  <burley@gnu.ai.mit.edu>
688         * global.c (ffeglobal_ref_progunit_): Don't reset
689         number of arguments just due to new type info,
690         so useful warnings can be issued.
692 1997-08-06  Dave Love  <d.love@dl.ac.uk>
694         * intrin.def: Fix IDATE_vxt argument order.
695         * intdoc.h: Likewise.
697 Thu Jul 31 22:22:03 1997  Craig Burley  <burley@gnu.ai.mit.edu>
699         * global.c (ffeglobal_proc_ref_arg): If REF/DESCR
700         disagreement, DESCR is CHARACTER, and types disagree,
701         pretend the argsummary agrees so the message ends up
702         being about type disagreement.
703         (ffeglobal_proc_def_arg): Ditto.
705         * expr.c (ffeexpr_token_first_rhs_3_): Set info for LABTOK
706         to NONE of everything, to avoid misdiagnosing filewide
707         usage of alternate returns.
709 Sun Jul 20 23:07:47 1997  Craig Burley  <burley@gnu.ai.mit.edu>
711         * com.c (ffecom_sym_transform_): If type gets set
712         to error_mark_node, just return that for transformed symbol.
713         (ffecom_member_phase2_): If type gets set to error_mark_node,
714         just return.
715         (ffecom_check_size_overflow_): Add `dummy' argument to
716         flag that type is for a dummy, update all callers.
718 Sun Jul 13 17:40:53 1997  Craig Burley  <burley@gnu.ai.mit.edu>
720         Fix 970712-1.f:
721         * where.c (ffewhere_set_from_track): If start point
722         is too large, just use initial start point.  0.6 should
723         fix all this properly.
725         Fix 970712-2.f:
726         * com.c (ffecom_sym_transform_): Preserve error_mark_node for type.
727         (ffecom_type_localvar_): Ditto.
728         (ffecom_sym_transform_): If type is error_mark_node,
729         don't error-check decl size, because back end responds by
730         setting that to an integer 0 instead of error_mark_node.
731         (ffecom_transform_common_): Same as earlier fix to _transform_
732         in that size is checked by dividing BITS_PER_UNIT instead of
733         multiplying.
734         (ffecom_transform_equiv_): Ditto.
736         Fix 970712-3.f:
737         * stb.c (ffestb_R10014_): Fix flaky fall-through in error
738         test for FFELEX_typeCONCAT by just replicating the code,
739         and do FFELEX_typeCOLONCOLON while at it.
741 1997-07-07  Dave Love  <d.love@dl.ac.uk>
743         * intdoc.h: Add various missing pieces; correct GMTIME, LTIME
744         result ordering.
746         * intrin.def, com-rt.def: Add alarm.
748         * com.c (ffecom_expr_intrinsic_): Add case for alarm.
750 Thu Jun 26 04:19:40 1997  Craig Burley  <burley@gnu.ai.mit.edu>
752         Fix 970302-3.f:
753         * com.c (ffecom_sym_transform_): For sanity-check compare
754         of gbe size of local variable to g77 expectation,
755         use varasm.c/assemble_variable technique of dividing
756         BITS_PER_UNIT out of gbe info instead of multiplying
757         g77 info up, to avoid crash when size in bytes is very
758         large, and overflows an `int' or similar when multiplied.
760         Fix 970626-2.f:
761         * com.c (ffecom_finish_symbol_transform_): Don't bother
762         transforming a dummy argument, to avoid a crash.
763         * ste.c (ffeste_R1227): Don't return a value if the
764         result decl, or its type, is error_mark_node.
766         Fix 970626-4.f:
767         * lex.c (ffelex_splice_tokens): `-fdollar-ok' is
768         irrelevant to whether a DOLLAR token should be made
769         from an initial character of `$'.
771         Fix 970626-6.f:
772         * stb.c (ffestb_do3_): DO iteration variable is an
773         lhs, not rhs, expression.
775         Fix 970626-7.f and 970626-8.f:
776         * expr.c (ffeexpr_cb_comma_i_1_): Set IMPDO expression
777         to have clean info, because undefined rank, for example,
778         caused crash on mangled source on UltraSPARC but not
779         on Alpha for a series of weird reasons.
780         (ffeexpr_cb_close_paren_): If not CLOSE_PAREN, push
781         opANY expression onto stack instead of attempting
782         to mimic what program might have wanted.
783         (ffeexpr_cb_close_paren_): Don't wrap opPAREN around
784         opIMPDO, just warn that it's gratuitous.
785         * bad.def (FFEBAD_IMPDO_PAREN): New warning.
787         Fix 970626-9.f:
788         * expr.c (ffeexpr_declare_parenthesized_): Must shut down
789         parsing in kindANY case, otherwise the parsing engine might
790         decide there's an ambiguity.
791         (ffeexpr_token_name_rhs_): Eliminate parentypeSUBROUTINE_
792         case, so we crash right away if it comes through.
793         * st.c, st.h, sta.c, sta.h (ffest_shutdown, ffesta_shutdown):
794         New functions.
796 Tue Jun 24 19:47:29 1997  Craig Burley  <burley@gnu.ai.mit.edu>
798         * com.c (ffecom_check_size_overflow_): New function
799         catches some cases of the size of a type getting
800         too large.  varasm.c must catch the rest.
801         (ffecom_sym_transform_): Use new function.
802         (ffecom_type_localvar_): Ditto.
804 Mon Jun 23 01:09:28 1997  Craig Burley  <burley@gnu.ai.mit.edu>
806         * global.c (ffeglobal_proc_def_arg): Fix comparison
807         of argno to #args.
808         (ffeglobal_proc_ref_arg): Ditto.
810         * lang-options.h, top.c: Rename `-fdebug' to `-fxyzzy',
811         since it's an unsupported internals option and some
812         poor user might guess that it does something.
814         * bad.def: Make a warning for each filewide diagnostic.
815         Put all filewides together.
816         * com.c (ffecom_sym_transform_): Don't substitute
817         known global tree for global entities when `-fno-globals'.
818         * global.c (ffeglobal_new_progunit_): Don't produce
819         fatal diagnostics about globals when `-fno-globals'.
820         Instead, produce equivalent warning when `-Wglobals'.
821         (ffeglobal_proc_ref_arg): Ditto.
822         (ffeglobal_proc_ref_nargs): Ditto.
823         (ffeglobal_ref_progunit_): Ditto.
824         * lang-options.h, top.c, top.h: New `-fno-globals' option.
826 Sat Jun 21 12:32:54 1997  Craig Burley  <burley@gnu.ai.mit.edu>
828         * expr.c (ffeexpr_fulfill_call_): Set array variable
829         to avoid warning about uninitialized variable.
831         * Make-lang.in: Get rid of any setting of HOST_* macros,
832         since these will break gcc's build!
833         * makefile: New file to make building derived files
834         easier.
836 Thu Jun 19 18:19:28 1997  Craig Burley  <burley@gnu.ai.mit.edu>
838         * g77.c (main): Install Emilio Lopes' patch to support
839         Ratfor, and to fix the printing of the version string
840         to go to stderr, not stdout.
841         * lang-specs.h: Install Emilio Lopes' patch to support
842         Ratfor, and patch the result to support picking up
843         `*f771' from the `specs' file.
845 Thu Jun 12 14:36:25 1997  Craig Burley  <burley@gnu.ai.mit.edu>
847         * storag.c (ffestorag_update_init, ffestorag_update_save):
848         Also update parent, in case equivalence processing
849         has already eliminated pointers to it via the
850         local equivalence info.
852 Tue Jun 10 14:08:26 1997  Craig Burley  <burley@gnu.ai.mit.edu>
854         * intdoc.c: Add cross-reference to end of description
855         of any generic intrinsic pointing to other intrinsics
856         with the same name.
858         Warn about explicit type declaration for intrinsic
859         that disagrees with invocation:
860         * expr.c (ffeexpr_paren_rhs_let_): Preserve type info
861         for intrinsic functions.
862         (ffeexpr_token_funsubstr_): Ditto.
863         * intrin.c (ffeintrin_fulfill_generic): Warn if type
864         info of fulfilled intrinsic invocation disagrees with
865         explicit type info given symbol.
866         (ffeintrin_fulfill_specific): Ditto.
867         * stc.c (ffestc_R1208_item): Preserve type info
868         for intrinsics.
869         (ffestc_R501_item): Ditto.
871 Mon Jun  9 17:45:44 1997  Craig Burley  <burley@gnu.ai.mit.edu>
873         * com.c (ffecom_expr_intrinsic_): Fix several of the
874         libU77/libF77-unix handlers to properly convert their
875         arguments.
877         * com-rt.def (FFECOM_gfrtFSTAT): Append missing "i" to
878         arg string.
880 Fri Jun  6 14:37:30 1997  Craig Burley  <burley@gnu.ai.mit.edu>
882         * com.c (ffecom_expr_intrinsic_): Have a case statement
883         for every intrinsic implementation, so missing ones
884         are caught via gcc warnings.
885         Don't call ffeintrin_codegen_imp anymore.
886         * intrin.c (ffeintrin_fulfill_generic): Remove cg_imp
887         stuff from here.
888         (ffeintrin_codegen_imp): Delete this function.
889         * intrin.def, intrin.h: Remove DEFIMQ stuff from here
890         as well.
892 Thu Jun  5 13:03:07 1997  Craig Burley  <burley@gnu.ai.mit.edu>
894         * top.c (ffe_decode_option): New -fbadu77-intrinsics-*
895         options.
896         * top.h: Ditto.
897         * intrin.h: New BADU77 family.
898         * intrin.c (ffeintrin_state_family): Ditto.
900         Implement new scheme to track intrinsic names vs. forms:
901         * intrin.c (ffeintrin_fulfill_generic),
902         (ffeintrin_fulfill_specific), (ffeintrin_is_intrinsic),
903         intrin.def: The documented name is now either in the
904         generic info or, if no generic, in the specific info.
905         For a generic, the specific info contains merely the
906         distinguishing form (usually "function" or "subroutine"),
907         used for diagnostics about ambiguous references and
908         in the documentation.
910         * intrin.def: Clean up formatting of DEFNAME block.
911         Convert many libU77 intrinsics into generics that
912         support both subroutine and function forms.
913         Put the function forms of side-effect routines into
914         the new BADU77 family.
915         Make MCLOCK and TIME return INTEGER*4 again, and add
916         INTEGER*8 equivalents called MCLOCK8 and TIME8.
917         Fix up more status return values to be written and
918         insist on them being I1 as well.
919         * com.c (ffecom_expr_intrinsic_): Lots of changes to
920         support new libU77 intrinsic interfaces.
922 Mon Jun  2 00:37:53 1997  Craig Burley  <burley@gnu.ai.mit.edu>
924         * com.c (ffecom_init_0): Pointer type is now INTEGER(KIND=7),
925         not INTEGER(KIND=0), since we want to reserve KIND=0 for
926         future use.
928 Thu May 29 14:30:33 1997  Craig Burley  <burley@gnu.ai.mit.edu>
930         Fix bugs preventing CTIME(I*4) from working correctly:
931         * com.c (ffecom_char_args_): For FUNCREF case, process
932         args to intrinsic just as they would be in
933         ffecom_expr_intrinsic_.
934         * com-rt.def (FFECOM_gfrtCTIME, FFECOM_gfrtTTYNAM): Fix
935         argument decls to specify `&'.
937 Wed May 28 22:19:49 1997  Craig Burley  <burley@gnu.ai.mit.edu>
939         Fix gratuitous warnings exposed by dophot aka 970528-1:
940         * global.c (ffeglobal_proc_def_arg, ffeglobal_proc_ref_arg):
941         Support distinct function/subroutine arguments instead of
942         just procedures.
943         * global.h: Ditto.
944         * expr.c (ffeexpr_fulfill_call_): A SYMTER with kindNONE
945         also is a procedure (either function or subroutine).
947 Mon May 26 20:25:31 1997  Craig Burley  <burley@gnu.ai.mit.edu>
949         * bad.def: Have several lexer diagnostics refer to
950         documentation for people who need more info on what Fortran
951         source code is supposed to look like.
953         * expr.c (ffeexpr_reduced_bool1_), bad.def: New diagnostics
954         specific to .NOT. now mention only one operand instead
955         of two.
957         * g77.c: Recognize -fsyntax-only, similar to -c etc.
958         (lookup_option): Fix bug that prevented non-`--' options
959         from being recognized.
961 Sun May 25 04:29:04 1997  Craig Burley  <burley@gnu.ai.mit.edu>
963         * intrin.def (FFEINTRIN_impCTIME): Accept `I*' expression
964         for STime instead of requiring `I2'.
966 Tue May 20 16:14:40 1997  Craig Burley  <burley@gnu.ai.mit.edu>
968         * symbol.c (ffesymbol_reference): All references to
969         standard intrinsics are considered explicit, so as
970         to avoid generating basically useless warnings.
971         * intrin.c, intrin.h (ffeintrin_is_standard): Returns TRUE
972         if intrinsic is standard.
974 Sun May 18 21:14:59 1997  Craig Burley  <burley@gnu.ai.mit.edu>
976         * com-rt.def: Changed all external names of the
977         form `"\([a-z0-9]*\)_' to `"G77_\1_0"' so as to
978         allow any name valid as an intrinsic to be used
979         as such and as a user-defined external procedure
980         name or common block as well.
982 Thu May  8 13:07:10 1997  Craig Burley  <burley@gnu.ai.mit.edu>
984         * expr.c (ffeexpr_cb_end_notloc_): For %VAL, %REF, and
985         %DESCR, copy arg info into new node.
987 Mon May  5 14:42:17 1997  Craig Burley  <burley@gnu.ai.mit.edu>
989         From Uwe F. Mayer <mayer@math.Vanderbilt.Edu>:
990         * Make-lang.in (g77-cross): Fix typo in g77.c path.
992         From Brian McIlwrath <bkm@star.rl.ac.uk>:
993         * lang-specs.h: Have g77 pick up options from a section
994         labeled `*f771' of the `specs' file.
996 Sat May  3 02:46:08 1997  Craig Burley  <burley@gnu.ai.mit.edu>
998         * intrin.def (FFEINTRIN_defSIGNAL): Add optional `Status'
999         argument that com.c already expects (per Dave Love).
1001         More changes to support better tracking of (filewide)
1002         globals, in particular, the arguments to procedures:
1003         * bad.def (FFEBAD_FILEWIDE_NARGS, FFEBAD_FILEWIDE_NARGS_W,
1004         FFEBAD_FILEWIDE_ARG, FFEBAD_FILEWIDE_ARG_W): New diagnostics.
1005         * expr.c (ffebad_fulfill_call_): Provide info on each
1006         argument to ffeglobal.
1007         * global.c, global.h (ffeglobal_proc_def_arg,
1008         ffeglobal_proc_def_nargs, ffeglobal_proc_ref_arg,
1009         ffeglobal_proc_ref_args): New functions.
1010         (ffeglobalArgSummary, ffeglobalArgInfo_): New types.
1012 Tue Apr 29 18:35:41 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1014         More changes to support better tracking of (filewide)
1015         globals:
1016         * expr.c (ffeexpr_fulfill_call_): New function.
1017         (ffeexpr_token_name_lhs_): Call after building procedure
1018         reference expression.  Also leave info field for ANY-ized
1019         expression alone.
1020         (ffeexpr_token_arguments_): Ditto.
1022 Mon Apr 28 20:04:18 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1024         Changes to support better tracking of (filewide)
1025         globals, mainly to avoid crashes due to inlining:
1026         * bad.def: Go back to quoting intrinsic names,
1027         (FFEBAD_FILEWIDE_DISAGREEMENT, FFEBAD_FILEWIDE_TIFF,
1028         FFEBAD_FILEWIDE_TYPE_MISMATCH): New diagnostics.
1029         (FFEBAD_INTRINSIC_EXPIMP, FFEBAD_INTRINSIC_GLOBAL): Reword
1030         for clarity.
1031         * com.c (ffecom_do_entry_, ffecom_start_progunit_,
1032         ffecom_sym_transform_): Accommodate new FFEGLOBAL_typeEXT
1033         possibility.
1034         * expr.c (ffeexpr_sym_lhs_call_, ffeexpr_sym_lhs_extfunc_,
1035         ffeexpr_sym_rhs_actualarg_, ffeexpr_declare_parenthesized_,
1036         ffeexpr_paren_rhs_let_, ffeexpr_token_funsubstr_):
1037         Fill in real kind info instead of leaving NONE where
1038         appropriate.
1039         Register references to intrinsics and globals with ffesymbol
1040         using new ffesymbol_reference function instead of
1041         ffesymbol_globalize.
1042         * global.c (ffeglobal_type_string_): New array for
1043         new diagnostics.
1044         * global.h, global.c:
1045         Replace ->init mechanism with ->tick mechanism.
1046         Move other common-related members into a substructure of
1047         a union, so the proc substructure can be introduced
1048         to include members related to externals other than commons.
1049         Don't complain about ANY-ized globals; ANY-ize globals
1050         once they're complained about, in any case where code
1051         generation could become a problem.
1052         Handle global entries that have NONE type (seen as
1053         intrinsics), EXT type (seen as EXTERNAL), and so on.
1054         Keep track of kind and type of externals, both via
1055         definition and via reference.
1056         Diagnose disagreements about kind or type of externals
1057         (such as functions).
1058         (ffeglobal_ref_intrinsic, ffeglobal_ref_progunit_): New
1059         functions.
1060         * stc.c (ffestc_R1207_item, ffestc_R1208_item,
1061         ffestc_R1219, ffestc_R1226):
1062         Call ffesymbol_reference, not ffesymbol_globalize.
1063         * stu.c (ffestu_sym_end_transition,
1064         ffestu_sym_exec_transition):
1065         Call ffesymbol_reference, not ffesymbol_globalize.
1066         * symbol.c (ffesymbol_globalize): Removed...
1067         (ffesymbol_reference): ...to this new function,
1068         which more generally registers references to symbols,
1069         globalizes globals, and calls on the ffeglobal module
1070         to check globals filewide.
1072         * global.h, global.c: Rename some macros and functions
1073         to more clearly distinguish common from other globals.
1074         All callers changed.
1076         * com.c (ffecom_sym_transform_): Trees describing
1077         filewide globals must be allocated on permanent obstack.
1079         * expr.c (ffeexpr_token_name_lhs_): Don't generate
1080         gratuitous diagnostics for FFEINFO_whereANY case.
1082 Thu Apr 17 03:27:18 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1084         * global.c: Add support for flagging intrinsic/global
1085         confusion via warnings.
1086         * bad.def (FFEBAD_INTRINSIC_EXPIMP,
1087         FFEBAD_INTRINSIC_GLOBAL): New diagnostics.
1088         * expr.c (ffeexpr_token_funsubstr_): Ditto.
1089         (ffeexpr_sym_lhs_call_): Ditto.
1090         (ffeexpr_paren_rhs_let_): Ditto.
1091         * stc.c (ffestc_R1208_item): Ditto.
1093 Wed Apr 16 22:40:56 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1095         * expr.c (ffeexpr_declare_parenthesized_): INCLUDE
1096         context can't be an intrinsic invocation either.
1098 Fri Mar 28 10:43:28 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1100         * expr.c (ffeexpr_token_arguments_): Make sure top of
1101         exprstack is operand before dereferencing operand field.
1103         * lex.c (ffelex_prepare_eos_): Fill up truncated
1104         hollerith token, so crash on null ->text field doesn't
1105         happen later.
1107         * stb.c (ffestb_R10014_): If NAMES isn't recognized (or
1108         the recognized part is followed in the token by a
1109         non-digit), don't try and collect digits, as there
1110         might be more than FFEWHERE_indexMAX letters to skip
1111         past to do so -- and the code is diagnosed anyway.
1113 Thu Mar 27 00:02:48 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1115         * com.c (ffecom_sym_transform_): Force local
1116         adjustable array onto stack.
1118         * stc.c (ffestc_R547_item_object): Don't actually put
1119         the symbol in COMMON if the symbol has already been
1120         EQUIVALENCE'd to a different COMMON area.
1122         * equiv.c (ffeequiv_add): Don't actually do anything
1123         if there's a disagreement over which COMMON area is
1124         involved.
1126 Tue Mar 25 03:35:19 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1128         * com.c (ffecom_transform_common_): If no explicit init
1129         of COMMON area, don't actually init it even though
1130         storage area suggests it.
1132 Mon Mar 24 12:10:08 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1134         * lex.c (ffelex_image_char_): Avoid overflowing the
1135         column counter itself, as well as the card image.
1137         * where.c (ffewhere_line_new): Cast ffelex_line_length()
1138         to (size_t) so 255 doesn't overflow to 0!
1140         * stc.c (ffestc_labeldef_notloop_begin_): Don't gratuitously
1141         terminate loop before processing statement, so block
1142         doesn't disappear out from under EXIT/CYCLE processing.
1143         (ffestc_labeldef_notloop_): Has old code from above
1144         function, instead of just calling it.
1146         * expr.c (ffeexpr_cb_comma_i_4_): Don't skip over
1147         arbitrary token (such as EOS).
1149         * com.c (ffecom_init_zero_): Handle RECORD_TYPE and
1150         UNION_TYPE so -fno-zeros works with -femulated-complex.
1152 1997-03-12  Dave Love  <d.love@dl.ac.uk>
1154         * intrin.def: New intrinsics INT2, INT8, CPU_TIME.  Fix AND, OR,
1155         XOR.  [Integrated by burley, AND/OR/XOR already fixed, INT8
1156         implementation changed/fixed.]
1158 Wed Mar 12 10:40:08 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1160         * Make-lang.in ($(srcdir)/f/intdoc.texi): Simplify rules
1161         so building f/intdoc is not always necessary; remove
1162         f/intdoc after running it if it is built.
1164 Tue Mar 11 23:42:00 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1166         * intrin.def (FFEINTRIN_impAND, FFEINTRIN_impOR,
1167         FFEINTRIN_impXOR): Use the IAND, IOR, and IEOR implementations
1168         of these, instead of crashing in ffecom_expr_intrinsic_
1169         or adding case labels there.
1171 Mon Mar 10 22:51:23 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1173         * intdoc.c: Fix so any C compiler can compile this.
1175 Fri Feb 28 13:16:50 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1177         * Version 0.5.20 released.
1179 Fri Feb 28 01:45:25 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1181         * Make-lang.in (RUNTIMESTAGESTUFF, LIBU77STAGESTUFF):
1182         Move some files incorrectly in the former to the latter,
1183         and add another file or two to the latter.
1185         New meanings for (KIND=n), and new denotations in the
1186         little language describing intrinsics:
1187         * com.c (ffecom_init_0): Assign new meanings.
1188         * intdoc.c: Document new meanings.
1189         Support the new denotations.
1190         * intrin.c: Employ new meanings, mapping them to internal
1191         values (which are the same as they ever were for now).
1192         Support the new denotations.
1193         * intrin.def: Switch DEFIMP table to the new denotations.
1195         * intrin.c (ffeintrin_check_): Fix bug that was leaving
1196         LOC() and %LOC() returning INTEGER*4 on systems where
1197         it should return INTEGER*8.
1199         * type.c: Canonicalize function definitions, for etags
1200         and such.
1202 Wed Feb 26 20:43:03 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1204         * com.c (ffecom_init_0): Choose INTEGER(KIND=n) types,
1205         where n is 2, 3, and 4, according to the new docs
1206         instead of according to the old C correspondences
1207         (which seem less useful at this point).
1209         * equiv.c (ffeequiv_destroy_): New function.
1210         (ffeequiv_layout_local_): Use this new function
1211         whenever the laying out of a local equivalence chain
1212         is aborted for any reason.
1213         Otherwise ensure that symbols no longer reference
1214         the stale ffeequiv entries that result when they
1215         are killed off in this procedure.
1216         Also, the rooted symbol is one that has storage,
1217         it really is irrelevant whether it has an equiv entry
1218         at this point (though the code to remove the equiv
1219         entry was put in at the end, just in case).
1220         (ffeequiv_kill): When doing internal checks, make
1221         sure the victim isn't named by any symbols it points
1222         to.  Not as complete a check as looking through the
1223         entire symbol table (which does matter, since some
1224         code in equiv.c used to remove symbols from the lists
1225         for an ffeequiv victim but not remove that victim as the
1226         symbol's equiv info), but this check did find some
1227         real bugs in the code (that were fixed).
1229 Mon Feb 24 16:42:13 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1231         * com.c (ffecom_expr_intrinsic_): Fix a couple of
1232         warnings about uninitialized variables.
1233         * intrin.c (ffeintrin_check_): Ditto, but there were
1234         a couple of _real_ uninitialized-variable _bugs_ here!
1235         (ffeintrin_fulfill_specific): Ditto, no real bug here.
1237 Sun Feb 23 15:01:20 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1239         Clean up diagnostics (especially about intrinsics):
1240         * bad.def (FFEBAD_UNIMPL_STMT): Remove.
1241         (FFEBAD_INTRINSIC_*, FFEBAD_NEED_INTRINSIC): Clean these
1242         up so they're friendlier.
1243         (FFEBAD_INTRINSIC_CMPAMBIG): New.
1244         * intrin.c (ffeintrin_fulfill_generic,
1245         ffeintrin_fulfill_specific, ffeintrin_is_intrinsic):
1246         Always choose
1247         generic or specific name text (which is for doc purposes
1248         anyway) over implementation name text (which is for
1249         internal use).
1250         * intrin.def: Use more descriptive name texts for generics
1251         and specifics in cases where the names themselves are not
1252         enough (e.g. IDATE, which has two forms).
1254         Fix some intrinsic mappings:
1255         * intrin.def (FFEINTRIN_specIDINT, FFEINTRIN_specAND,
1256         FFEINTRIN_specDFLOAT, FFEINTRIN_specDREAL, FFEINTRIN_specOR,
1257         FFEINTRIN_specXOR): Now have their own implementations,
1258         instead of borrowing from others.
1259         (FFEINTRIN_specAJMAX0, FFEINTRIN_specAJMIN0, FFEINTRIN_specBJTEST,
1260         FFEINTRIN_specDFLOTJ, FFEINTRIN_specFLOATJ, FFEINTRIN_specJIABS,
1261         FFEINTRIN_specJIAND, FFEINTRIN_specJIBCLR, FFEINTRIN_specJIBITS,
1262         FFEINTRIN_specJIBSET, FFEINTRIN_specJIDIM, FFEINTRIN_specJIDINT,
1263         FFEINTRIN_specJIDNNT, FFEINTRIN_specJIEOR, FFEINTRIN_specJIFIX,
1264         FFEINTRIN_specJINT, FFEINTRIN_specJIOR, FFEINTRIN_specJISHFT,
1265         FFEINTRIN_specJISHFTC, FFEINTRIN_specJISIN, FFEINTRIN_specJMAX0,
1266         FFEINTRIN_specJMAX1, FFEINTRIN_specJMIN0, FFEINTRIN_specJMIN1,
1267         FFEINTRIN_specJMOD, FFEINTRIN_specJNINT, FFEINTRIN_specJNOT,):
1268         Turn these implementations off, since it's not clear
1269         just what types they expect in the context of portable Fortran.
1270         (DFLOAT): Now in FVZ family, since f2c supports them
1272         Support intrinsic inquiry functions (BIT_SIZE, LEN):
1273         * intrin.c: Allow `i' in <arg_extra>.
1274         * intrin.def (FFEINTRIN_impBIT_SIZE, FFEINTRIN_impLEN):
1275         Mark args with `i'.
1277 Sat Feb 22 13:34:09 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1279         Only warn, don't error, for reference to unimplemented
1280         intrinsic:
1281         * bad.def (FFEBAD_INTRINSIC_UNIMPLW): Warning version
1282         of _UNIMPL.
1283         * intrin.c (ffeintrin_is_intrinsic): Use new warning
1284         version of _UNIMPL (FFEBAD_INTRINSIC_UNIMPLW).
1286         Complain about REAL(Z) and AIMAG(Z) (Z is DOUBLE COMPLEX):
1287         * bad.def (FFEBAD_INTRINSIC_CMPAMBIG): New diagnostic.
1288         * expr.c: Needed #include "intrin.h" anyway.
1289         (ffeexpr_token_intrincheck_): New function handles delayed
1290         diagnostic for "REAL(REAL(expr)" if next token isn't ")".
1291         (ffeexpr_token_arguments_): Do most of the actual checking here.
1292         * intrin.h, intrin.c (ffeintrin_fulfill_specific): New
1293         argument, check_intrin, to tell caller that intrin is REAL(Z)
1294         or AIMAG(Z).  All callers updated, mostly to pass NULL in
1295         for this.
1296         (ffeintrin_check_): Also has new arg check_intrin for same
1297         purpose.  All callers updated the same way.
1298         * intrin.def (FFEINTRIN_impAIMAG): Change return type
1299         from "R0" to "RC", to accommodate f2c (and perhaps other
1300         non-F90 F77 compilers).
1301         * top.h, top.c: New option -fugly-complex.
1303         New GNU intrinsics REALPART, IMAGPART, and COMPLEX:
1304         * com.c (ffecom_expr_intrinsic_): Implement impCOMPLEX
1305         and impREALPART here.  (specIMAGPART => specAIMAG.)
1306         * intrin.def: Add the intrinsics here.
1308         Rename implementations of VXTIDATE and VXTTIME to IDATEVXT
1309         and TIMEVXT, so they sort more consistently:
1310         * com.c (ffecom_expr_intrinsic_):
1311         * intrin.def:
1313         Delete intrinsic group `dcp', add `gnu', etc.:
1314         * intrin.c (ffeintrin_state_family): FFEINTRIN_familyGNU
1315         replaces FFEINTRIN_familyDCP, and gets state from `gnu'
1316         group.
1317         Get rid of FFEINTRIN_familyF2Z, nobody needs it.
1318         Move FFEINTRIN_specDCMPLX from DCP family to FVZ family,
1319         as f2c has it.
1320         Move FFEINTRIN_specDFLOAT from F2C family to FVZ family.
1321         (FFEINTRIN_specZABS, FFEINTRIN_specZCOS, FFEINTRIN_specZEXP,
1322         FFEINTRIN_specZLOG, FFEINTRIN_specZSIN, FFEINTRIN_specZSQRT):
1323         Move these from F2Z family to F2C family.
1324         * intrin.h (FFEINTRIN_familyF2Z, FFEINTRIN_familyDCP): Remove.
1325         (FFEINTRIN_familyGNU): Add.
1326         * top.h, top.c: Replace `dcp' with `gnu'.
1328         * com.c (ffecom_expr_intrinsic_): Clean up by collecting
1329         simple conversions into one nice, conceptual place.
1330         Fix up some intrinsic subroutines (MVBITS, KILL, UMASK) to
1331         properly push and pop call temps, to avoid wasting temp
1332         registers.
1334         * g77.c (doit): Toon says variables should be defined
1335         before being referenced.  Spoilsport.
1337         * intrin.c (ffeintrin_check_): Now Dave's worried about
1338         warnings about uninitialized variables.  Okay, so for
1339         basic return values 'g' and 's', they _were_
1340         uninitialized -- is determinism really _that_ useful?
1342         * intrin.def (FFEINTRIN_impFGETC): Fix STATUS argument
1343         so that it is INTENT(OUT) instead of INTENT(IN).
1345 1997-02-21  Dave Love  <d.love@dl.ac.uk>
1347         * intrin.def, com.c: Support Sun-type `short' and `long'
1348         intrinsics.  Perhaps should also do Microcruft-style `int2'.
1350 Thu Feb 20 15:16:53 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1352         * com.c (ffecom_expr_intrinsic_): Clean up indentation.
1353         Support SECONDSUBR intrinsic implementation.
1354         Rename SECOND to SECONDFUNC for direct support via library.
1356         * g77.c: Fix to return proper status value to shell,
1357         by obtaining it from processes it spawns.
1359         * intdoc.c: Fix minor typo.
1361         * intrin.def: Turn SECOND into generic that maps into
1362         function and subroutine forms.
1364         * intrin.def: Make FLOAT and SNGL into specific intrinsics.
1366         * intrin.def, intrin.h: Change the way DEFGEN and DEFSPEC
1367         macros work, to save on verbage.
1369 Mon Feb 17 02:08:04 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1371         New subsystem to automatically generate documentation
1372         on intrinsics:
1373         * Make-lang.in ($(srcdir)/f/g77.info,
1374         $(srcdir)/f/g77.dvi): Move g77 doc rules around.
1375         Add to g77 doc rules the new subsystem.
1376         (f77.mostlyclean, f77.maintainer-clean): Also clean up
1377         after new doc subsystem.
1378         * intdoc.c, intdoc.h: New doc subsystem code.
1379         * intrin.h [FFEINTRIN_DOC]: When 1, don't pull in
1380         stuff not needed by doc subsystem.
1382         Improve on intrinsics mechanism to both be more
1383         self-documenting and to catch more user errors:
1384         * intrin.c (ffeintrin_check_): Recognize new arg-len
1385         and arg-rank information, and check it.
1386         Move goto and signal indicators to the basic type.
1387         Permit reference to arbitrary argument number, not
1388         just first argument (for BESJN and BESYN).
1389         (ffeintrin_init_0): Check and accept new notations.
1390         * intrin.c, intrin.def: Value in COL now identifies
1391         arguments starting with number 0 being the first.
1393         Some minor intrinsics cleanups (resulting from doc work):
1394         * com.c (ffecom_expr_intrinsic_): Implement FLUSH
1395         directly once again, handle its optional argument,
1396         so it need not be a generic (awkward to handle in docs).
1397         * intrin.def (BESJ0, BESJ1, BESJN, BESY0, BESY1, BESYN,
1398         CHDIR, CHMOD, CTIME, DBESJ0, DBESJ1, DBESJN, DBESY0,
1399         DBESY1, DBESYN, DDIM, ETIME, FGETC, FNUM, FPUTC, FSTAT,
1400         GERROR, GETCWD, GETGID, GETLOG, GETPID, GETUID, GMTIME,
1401         HOSTNM, IDATE, IERRNO, IIDINT, IRAND, ISATTY, ITIME, JIDINT,
1402         LNBLNK, LSTAT, LTIME, MCLOCK, PERROR, SRAND, SYMLNK, TTYNAM,
1403         UMASK): Change capitalization of initcaps (official) name
1404         to be consistent with Burley's somewhat arbitrary rules.
1405         (BESJN, BESYN): These have return arguments of same type
1406         as their _second_ argument.
1407         (FLUSH): Now a specific, not generic, intrinsic, with one
1408         optional argument.
1409         (FLUSH1): Eliminated.
1410         Add arg-len and arg-rank info to several intrinsics.
1411         (ITIME): Change argument type from REAL to INTEGER.
1413 Tue Feb 11 14:04:42 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1415         * Make-lang.in (f771): Invocation of Makefile now done
1416         with $(srcdir)=gcc to go along with $(VPATH)=gcc.
1417         ($(srcdir)/f/runtime/configure,
1418         $(srcdir)/f/runtime/libU77/configure): Break these out
1419         so spurious triggers of this rule don't happen (as when
1420         configure.in is more recent than libU77/configure).
1421         (f77.rebuilt): Distinguish source versus build files,
1422         so this target can be invoked from build directory and
1423         still work.
1424         * Makefile.in: This now expects $(srcdir) to be the gcc
1425         source directory, not gcc/f, to agree with $(VPATH).
1426         Accordingly, $(INCLUDES) has been fixed, various cruft
1427         removed, the removal of f771 has been fixed to remove
1428         the _real_ f771 (not the one in gcc's parent directory),
1429         and so on.
1431         * lex.c: Part of ffelex_finish_statement_() now done
1432         by new function ffelex_prepare_eos_(), so that, in one
1433         popular case, the EOS can be prepared while the pointer
1434         is at the end of the non-continued line instead of the
1435         end of the line that marks no continuation.  This improves
1436         the appearance of diagnostics substantially.
1438 Mon Feb 10 12:44:06 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1440         * Make-lang.in: runtime Makefile's, and include/f2c.h,
1441         also depend on f/runtime/configure and f/runtime/libU77/configure.
1443         Fix various libU77 routines:
1444         * com-rt.def (FFECOM_gfrtCTIME, FFECOM_gfrtMCLOCK,
1445         FFECOM_gfrtTIME): These now use INTEGER*8 for time values,
1446         for compatibility with systems like Alpha.
1447         (FFECOM_gfrtSYSTEM_CLOCK, FFECOM_gfrtTTYNAM): Delete incorrect
1448         trailing underscore in routine names.
1449         * intrin.c, intrin.def: Support INTEGER*8 return values and
1450         arguments ('4').  Change FFEINTRIN_impCTIME, FFEINTRIN_impMCLOCK,
1451         and FFEINTRIN_impTIME accordingly.
1452         (ffeintrin_is_intrinsic): Don't give caller a clue about
1453         form of intrinsic -- shouldn't be needed at this point.
1455         Cope with generic intrinsics that are subroutines and functions:
1456         * com.c (ffecom_finish_symbol_transform_, ffecom_expr_transform_):
1457         Don't transform an intrinsic that is not known to be a subroutine
1458         or a function.  (Maybe someday have to avoid transforming
1459         any intrinsic with an undecided or unknown implementation.)
1460         * expr.c (ffeexpr_declare_unadorned_,
1461         ffeexpr_declare_parenthesized_): Ok to invoke generic
1462         intrinsic that has at least one subroutine form as a
1463         subroutine.
1464         Ok to pass intrinsic as actual arg if it has a known specific
1465         intrinsic form that is valid as actual arg.
1466         (ffeexpr_declare_parenthesized_): An unknown kind of
1467         intrinsic has a paren_type chosen based on context.
1468         (ffeexpr_token_arguments_): Build funcref/subrref based
1469         on context, not on kind of procedure being called.
1470         * intrin.h, intrin.c (ffeintrin_is_intrinsic): Undo changes of
1471         Tue Feb  4 23:12:04 1997 by me, change all callers to leave
1472         intrinsics as FFEINFO_kindNONE at this point.  (Some callers
1473         also had unused variables deleted as a result.)
1475         Enable all intrinsic groups (especially f90 and vxt):
1476         * target.h (FFETARGET_defaultSTATE_DCP, FFETARGET_defaultSTATE_F2C,
1477         FFETARGET_defaultSTATE_F90, FFETARGET_defaultSTATE_MIL,
1478         FFETARGET_defaultSTATE_UNIX, FFETARGET_defaultSTATE_VXT):
1479         Delete these macros, let top.c set them directly.
1480         * top.c (ffeintrinsic_state_dcp_, ffe_intrinsic_state_f2c_,
1481         ffe_intrinsic_state_f90_, ffe_intrinsic_state_mil_,
1482         ffe_intrinsic_state_unix_, ffe_intrinsic_state_vxt_):
1483         Enable all these directly.
1485 Sat Feb  8 03:21:50 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1487         * g77.c: Incorporate recent changes to ../gcc.c.
1488         For version magic (e.g. `g77 -v'), instead of compiling
1489         /dev/null, write, compile, run, and then delete a small
1490         program that prints the version numbers of the three
1491         components of libf2c (libF77, libI77, and libU77),
1492         so we get this info with bug reports.
1493         Also, this change reduces the chances of accidentally
1494         linking to an old (complex-alias-problem) libf2c.
1495         Fix `-L' so the argument is expected in `-Larg'.
1497         * com.h (FFECOM_f2cLONGINT): For INTEGER*8 support in f2c.h,
1498         dynamically determine proper type here, instead of
1499         assuming `long long int' is correct.
1501 Tue Feb  4 23:12:04 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1503         Add libU77 library from Dave Love <d.love@dl.ac.uk>:
1504         * Make-lang.in (f77-runtime): Depend on new Makefile.
1505         (f/runtime/libU77/Makefile): New rule.
1506         Also configure libU77.
1507         ($(srcdir)/f/runtime/configure: Use Makefile.in,
1508         so configuration doesn't have to have happened.
1509         (f77.mostlyclean, f77.clean, f77.distclean,
1510         f77.maintainer-clean): Some fixups here, but more work
1511         needed.
1512         (RUNTIMESTAGESTUFF): Add libU77's config.status.
1513         (LIBU77STAGESTUFF, f77.stage1, f77.stage2, f77.stage3,
1514         f77.stage4): New macro, appropriate uses added.
1515         * com-rt.def: Add libU77 procedures.
1516         * com.c (ffecom_f2c_ptr_to_integer_type_node,
1517         ffecom_f2c_ptr_to_real_type_node): New type nodes.
1518         (FFECOM_rttypeCHARACTER_): New type of run-time function.
1519         (ffecom_char_args_): Handle CHARACTER*n intrinsics
1520         where n != 1 here, instead of in ffecom_expr_intrinsic_.
1521         (ffecom_expr_intrinsic_): New code to handle new
1522         intrinsics.
1523         In particular, change how FFEINTRIN_impFLUSH is handled.
1524         (ffecom_make_gfrt_): Handle new type of run-time function.
1525         (ffecom_init_0): Initialize new type nodes.
1526         * config-lang.in: New libU77 directory.
1527         * intrin.h, intrin.c (ffeintrin_is_intrinsic): Handle
1528         potential generic for subroutine _and_ function
1529         specifics via two new arguments.  All callers changed.
1530         Properly ignore deleted/disabled intrinsics in resolving
1531         generics.
1532         (ffeintrin_check_, ffeintrin_init_0): Handle CHARACTER intrinsics of (*)
1533         length.
1534         * intrin.def: Permission granted by FSF to place this in
1535         public domain, which will allow it to serve as source
1536         for both g77 program and its documentation.
1537         Add libU77 intrinsics.
1538         (FLUSH): Now a generic, not specific, intrinsic.
1539         (DEFIMP): Now support return modifier for CHARACTER intrinsics.
1541         * com-rt.def (FFECOM_gfrtDIM, FFECOM_gfrtERF,
1542         FFECOM_gfrtERFC, FFECOM_gfrtEXP, FFECOM_gfrtSIGN,
1543         FFECOM_gfrtSIN, FFECOM_gfrtSINH, FFECOM_gfrtTAN,
1544         FFECOM_gfrtTANH, FFECOM_gfrtPOW_RI): Change "&r" to "&f".
1546 Sat Feb  1 12:15:09 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1548         * Version 0.5.19.1 released.
1550         * com.c (ffecom_expr_, ffecom_expr_intrinsic_,
1551         ffecom_tree_divide_): FFECOM_gfrtPOW_ZI,
1552         FFECOM_gfrtCONJG, FFECOM_gfrtDCONJG,
1553         FFECOM_gfrtCCOS, FFECOM_gfrtCDCOS,
1554         FFECOM_gfrtCLOG, FFECOM_gfrtCDLOG,
1555         FFECOM_gfrtCSIN, FFECOM_gfrtCDSIN,
1556         FFECOM_gfrtCSQRT, FFECOM_gfrtCDSQRT,
1557         FFECOM_gfrtDIV_CC, FFECOM_gfrtDIV_ZZ: These all require
1558         result to _not_ overlap one or more inputs.
1560 Sat Feb  1 00:25:55 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1562         * com.c (ffecom_init_0): Do internal checks only if
1563         -fset-g77-defaults not specified.
1565         Fix %LOC(), LOC() to return sufficiently wide type:
1566         * com.h, com.c (ffecom_pointer_kind_, ffecom_label_kind_,
1567         ffecom_pointer_kind(), ffecom_label_kind()): New globals
1568         and accessor macros hold kind for integer pointers on target
1569         machine.
1570         (ffecom_init_0): Determine narrowest INTEGER type that
1571         can hold a pointer (usually INTEGER*4 or INTEGER*8),
1572         store it in ffecom_pointer_kind_, etc.
1573         * expr.c (ffeexpr_cb_end_loc_): Use right type for %LOC().
1574         * intrin.c (ffeintrin_check_, ffeintrin_init_0): Support
1575         new 'p' kind for type of intrinsic.
1576         * intrin.def (FFEINTRIN_impLOC): Returns "Ip" instead of "I1",
1577         so LOC() type is correct for target machine.
1579         Support -fugly-assign:
1580         * lang-options.h, top.h, top.c (ffe_decode_option):
1581         Accept -fugly-assign and -fno-ugly-assign.
1582         * com.c (ffecom_expr_): Handle -fugly-assign.
1583         * expr.c (ffeexpr_finished_): Check right type for ASSIGN
1584         contexts.
1586 Fri Jan 31 14:30:00 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1588         Remove last vestiges of -fvxt-not-f90:
1589         * stb.c (ffestb_R10012_, ffestb_R10014_, ffestb_V0201_):
1590         top.c, top.h:
1592 Fri Jan 31 02:13:54 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1594         * top.c (ffe_decode_option): Warn if -fugly is specified,
1595         it'll go away soon.
1597         * symbol.h: No need to #include "bad.h".
1599         Reorganize features from -fvxt-not-f90 to -fvxt:
1600         * lang-options.h, top.h, top.c:
1601         Accept -fvxt and -fno-vxt, but not -fvxt-not-f90 or -ff90-not-vxt.
1602         Warn if the latter two are used.
1603         * expr.c (ffeexpr_nil_rhs_): Double-quote means octal constant.
1604         (ffeexpr_token_rhs_): Double-quote means octal constant.
1605         * target.h (FFETARGET_defaultIS_VXT_NOT_90): Delete macro
1606         definition, no longer needed.
1608         Make some -ff90 features the default:
1609         * data.c (ffedata_value): DATA implies SAVE.
1610         * src.h (ffesrc_is_name_noninit): Underscores always okay.
1612         Fix up some more #error directives by quoting their text:
1613         * bld.c (ffebld_constant_is_zero):
1614         * target.h:
1616 Sat Jan 18 18:22:09 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1618         * g77.c (lookup_option, main): Recognize `-Xlinker',
1619         `-Wl,', `-l', `-L', `--library-directory', `-o',
1620         `--output'.
1621         (lookup_option): Don't depend on SWITCH_TAKES_ARG
1622         being correct, it might or might not have `-x' in
1623         it depending on host.
1624         Return NULL argument if it would be an empty string.
1625         (main): If no input files (by gcc.c's definition)
1626         but `-o' or `--output' specified, produce diagnostic
1627         to avoid overwriting output via gcc.
1628         Recognize C++ `+e' options.
1629         Treat -L as another non-magical option (like -B).
1630         Don't append_arg `-x' twice.
1632 Fri Jan 10 23:36:00 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1634         * top.c [BUILT_FOR_270] (ffe_decode_option): Make
1635         -fargument-noalias-global the default.
1637 Fri Jan 10 07:42:27 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1639         Enable inlining of previously-compiled program units:
1640         * com.c (ffecom_do_entry_, ffecom_start_progunit_):
1641         Register new public function in ffeglobal database.
1642         (ffecom_sym_transform_): Any GLOBAL or potentially GLOBAL
1643         symbol should be looked up in ffeglobal database and
1644         that tree node used, if found.  That way, gcc knows
1645         the references are to those earlier definitions, so it
1646         can emit shorter branches/calls, inline, etc.
1647         (ffecom_transform_common_): Minor change for clarity.
1648         * expr.c (ffeexpr_sym-lhs_call_, ffeexpr_sym_lhs_extfunc_,
1649         ffeexpr_sym_rhs_actualarg_, ffeexpr_paren_rhs_let_,
1650         ffeexpr_token_funsubstr_): Globalize symbol as needed.
1651         * global.c (ffeglobal_promoted): New function to look up
1652         existing local symbol in ffeglobal database.
1653         * global.h: Declare new function.
1654         * name.h (ffename_token): New macro, plus alphabetize.
1655         * stc.c (ffestc_R1207_item): Globalize EXTERNAL symbol.
1656         * stu.c (ffestu_sym_end_transition, ffestu_sym_exec_transition):
1657         Globalize symbol as needed.
1658         * symbol.h, symbol.c (ffesymbol_globalize): New function.
1660 Thu Jan  9 14:20:00 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1662         * ste.c (ffeste_R809): Produce a diagnostic for SELECT CASE
1663         on CHARACTER type, instead of crashing.
1665 Thu Jan  9 00:52:45 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1667         * stc.c (ffestc_order_entry_, ffestc_order_format_,
1668         ffestc_R1226): Allow ENTRY and FORMAT before IMPLICIT
1669         NONE, by having them transition only to state 1 instead
1670         of state 2 (which is disallowed by IMPLICIT NONE).
1672 Mon Jan  6 22:44:53 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1674         Fix AXP bug found by Rick Niles (961201-1.f):
1675         * com.c (ffecom_init_0): Undo my 1996-05-14 change, as
1676         it is incorrect and prevented easily finding this bug.
1677         * target.h [__alpha__] (ffetargetReal1, ffetargetReal2):
1678         Use int instead of long.
1679         (ffetarget_cvt_r1_to_rv_, ffetarget_cvt_rv_to_r1_,
1680         ffetarget_cvt_r2_to_rv_, ffetarget_cvt_rv_to_r2_):
1681         New functions that intercede for callers of
1682         REAL_VALUE_(TO|UNTO)_TARGET_(SINGLE|DOUBLE).
1683         All callers changed, and damaging casts to (long *) removed.
1685 Sun Jan  5 03:26:11 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1687         * Make-lang.in (g77, g77-cross): Depend on both g77.c and
1688         zzz.c, in $(srcdir)/f/.
1690         Better design for -fugly-assumed:
1691         * stc.c (ffestc_R501_item, ffestc_R524_item,
1692         ffestc_R547_item_object): Pass new is_ugly_assumed flag.
1693         * stt.c, stt.h (ffestt_dimlist_as_expr,
1694         ffestt_dimlist_type): New is_ugly_assumed flag now
1695         controls whether "1" is treated as "*".
1696         Don't treat "2-1" or other collapsed constants as "*".
1698 Sat Jan  4 15:26:22 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1700         * stb.c (ffestb_R10012_): Don't confirm on FORMAT(A,)
1701         or even FORMAT(A,,B), as R1229 only warns about the
1702         former currently, and this seems reasonable.
1704         Improvements to diagnostics:
1705         * sta.c (ffesta_second_): Don't add any ffestb parsers
1706         unless they're specifically called for.
1707         Set up ffesta_tokens[0] before calling ffestc_exec_transition,
1708         else stale info might get used.
1709         (ffesta_save_): Do a better job picking which parser to run
1710         after running all parsers with no confirmed possibles.
1711         (FFESTA_maxPOSSIBLES_): Decrease from 100 now that so few
1712         possibles are ever on the list at a given time.
1713         (struct _ffesta_possible): Add named attribute.
1714         (ffesta_add_possible_exec_, ffesta_add_possible_nonexec_):
1715         Make these into macros that call a single function that now
1716         sets the named attribute.
1717         (ffesta_add_possible_unnamed_exec_,
1718         ffeseta_add_possible_unnamed_nonexec_): New macros.
1719         (ffesta_second_): Designate unnamed possibles as
1720         appropriate.
1721         * stb.c (ffestb_R1229, ffestb_R12291_): Use more general
1722         diagnostic, so things like "POINTER (FOO, BAR)" are
1723         diagnosed as unrecognized statements, not invalid statement
1724         functions.
1725         * stb.h, stb.c (ffestb_unimplemented): Remove function.
1727 1996-12-30  Dave Love  <d.love@dl.ac.uk>
1729         * com.c: #include libU77/config.h
1730         (ffecom_f2c_ptr_to_integer_type_node,
1731         ffecom_f2c_ptr_to_integer_type_node): New variables.
1732         (ffecom_init_0): Use them.
1733         (ffecom_expr_intrinsic_): Many news cases for libU77 intrinsics.
1735         * com-rt.def: New definitions for libU77.
1736         * intrin.def: Likewise.  Also correct ftell arg spec.
1738         * Makefile.in (f/runtime/libU77/config.h): New target for com.c
1739         dependency.
1740         * Make-lang.in (f771): Depend on f/runtime/Makefile for the above.
1742 Sat Dec 28 12:28:29 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1744         * stt.c (ffestt_dimlist_type):  Treat ([...,]1) in dimlist
1745         as ([...,]*) if -fugly-assumed, so assumed-size array
1746         detected early enough.
1748 Thu Dec 19 14:01:57 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1750         * target.h (FFETARGET_REAL_VALUE_FROM_INT_): Conditionalize
1751         definition on BUILT_FOR_280, not BUILT_WITH_280, since
1752         the name of the macro was (properly) changed since 0.5.19.
1754         Fix warnings/errors resulting from ffetargetOffset becoming
1755         `long long int' instead of `unsigned long' as of 0.5.19,
1756         while ffebitCount remains `unsigned long':
1757         * bld.c (ffebld_constantarray_dump): Avoid warnings by
1758         using loop var of appropriate type, and using casts.
1759         * com.c (ffecom_expr_): Use right type for loop var.
1760         (ffecom_sym_transform_, ffecom_transform_equiv_):
1761         Cast to right type in assertions.
1762         * data.c (ffedata_gather_, ffedata_value_): Cast to right
1763         type in assertions and comparisons.
1765 Wed Dec 18 12:07:11 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1767         Patch from Alexandre Oliva <oliva@dcc.unicamp.br>:
1768         * Makefile.in (all.indirect): Don't pass -bbigtoc option
1769         to GNU ld.
1771         Cope with new versions of gcc:
1772         * com.h (BUILT_FOR_280): New macro.
1773         * com.c (ffecom_ptr_to_expr): Conditionalize test of
1774         OFFSET_REF.
1775         (ffecom_build_complex_constant_): Conditionalize calling
1776         sequence for build_complex.
1778 Sat Dec  7 07:15:17 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1780         * Version 0.5.19 released.
1782 Fri Dec  6 12:23:55 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1784         * g77.c: Default to assuming "f77" is in $LANGUAGES, since
1785         the LANGUAGE_F77 macro isn't defined by anyone anymore (but
1786         might as well leave the no-f77 code in just in case).
1787         * Make-lang.in (g77, g77-cross): Don't define LANGUAGE_F77
1788         anymore.
1790 1996-12-06  Dave Love  <d.love@dl.ac.uk>
1792         * Make-lang.in (g77, g77-cross): Revert to building `g77' or not
1793         conditional on `f77' in LANGUAGES.
1795 Wed Dec  4 13:08:44 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1797         * Make-lang.in (g77, g77-cross): No libs or lib dependencies
1798         in case where "f77" is not in $LANGUAGES.
1800         * lex.c (ffelex_image_char_, ffelex_file_fixed,
1801         ffelex_file_free): Fixes to properly handle lines with
1802         null character, and too-long lines as well.
1804         * lex.c: Call ffebad_start_msg_lex instead of
1805         ffebad_start_msg throughout.
1807 Sun Dec  1 21:19:55 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1809         Fix-up for 1996-11-25 changes:
1810         * com.c (ffecom_member_phase2_): Subtract out 0 offset for
1811         elegance and consistency with EQUIVALENCE aggregates.
1812         (ffecom_sym_transform_): Ditto for LOCAL/COMMON, and
1813         ensure we get the same parent storage area.
1814         * data.c (ffedata_gather_, ffedata_value_): Subtract out
1815         aggregate offset.
1817 Wed Nov 27 13:55:57 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1819         * proj.h: Quote the text of the #error message, to avoid
1820         strange-looking diagnostics from non-gcc ANSI compilers.
1822         * top.c: Make -fno-debug-kludge the default.
1824 Mon Nov 25 20:13:45 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1826         Provide more info on EQUIVALENCE mismatches:
1827         * bad.def (FFEBAD_EQUIV_MISMATCH): More detailed message.
1828         * equiv.c (ffeequiv_layout_local_, ffeequiv_layout_cblock):
1829         More details for FFEBAD_EQUIV_MISMATCH.
1831         Fix problem with EQUIVALENCE handling:
1832         * equiv.c (ffeequiv_layout_local_): Redesign algorithm --
1833         old one was broken, resulting in rejection of good code.
1834         (ffeequiv_offset_): Add argument, change callers.
1835         Clean up the code, fix up the (probably unused) negative-value
1836         case for SYMTER.
1837         * com.c (ffecom_sym_transform_): For local EQUIVALENCE
1838         member, subtract out aggregate offset (which is <= 0).
1840 Thu Nov 21 12:44:56 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1842         Change type of ffetargetOffset from `unsigned long' to `long long':
1843         * bld.c (ffebld_constantarray_dump): Change printf formats.
1844         * storag.c (ffestorag_dump): Ditto.
1845         * symbol.c (ffesymbol_report): Ditto.
1846         * target.h (ffetargetOffset_f): Ditto and change type itself.
1848         Handle situation where list of languages does not include f77:
1849         * Make-lang.in: Define LANGUAGE_F77 to 1 only if `f77' is in
1850         the $LANGUAGES macro for the build.
1851         * g77.c: Compile to a (nearly) no-op program if LANGUAGE_F77
1852         is not defined to 1.
1854         Fixes to delay confirmation of READ, WRITE, and GOTO statements
1855         so the corresponding assignments to same-named CHAR*(*) arrays
1856         work:
1857         * stb.c (ffestb_R90915_, ffestb_91014_): New functions.
1858         (ffestb_goto3_, ffestb_goto5_): Move confirmation from 3 to 5
1859         for the OPEN_PAREN case.
1860         (ffestb_R9091_, ffestb_R9094_, ffestb_R90913_, ffestb_R90914_,
1861         ffestb_R91012_, ffestb_R91013_): Use new functions, and confirm
1862         except for the OPEN_PAREN case.
1864         Fixes to not confirm declarations with an open paren where
1865         an equal sign or other assignment-like token might be, so the
1866         corresponding assignments to same-named CHAR*(*) arrays work:
1867         (ffestb_decl_entsp_5_): Move assertion so we crash on that first,
1868         if it turns out to be wrong, before the less-debuggable crash
1869         on mistaken confirmation.
1870         (ffestb_decl_entsp_6_, ffestb_decl_entsp_7_, ffestb_decl_entsp_8_):
1871         Include OPEN_PAREN in list of assignment-only tokens.
1873         Fix more diagnosed-crash bugs:
1874         * stu.c (ffestu_sym_end_transition): ANY-ize an adjustable array
1875         with bad dimension expressions even if still stateUNCERTAIN.
1876         (ffestu_symter_end_transition_, ffestu_symter_exec_transition_):
1877         Return TRUE for opANY as well.
1878         For code elegance, move opSYMTER case into first switch.
1880 1996-11-17  Dave Love  <d.love@dl.ac.uk>
1882         * lex.c: Fix last change.
1884 1996-11-14  Dave Love  <d.love@dl.ac.uk>
1886         * Make-lang.in, config-lang.in: Remove the (broken) libU77 stuff,
1887         pending 0.5.20.
1889 Thu Nov 14 15:40:59 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1891         * bad.def (FFEBAD_UNIMPL_STMT): Explain that invalid
1892         intrinsic references can trigger this message, too.
1894 1996-11-12  Dave Love  <d.love@dl.ac.uk>
1896         * lex.c: Declare dwarfout routines.
1898         * config-lang.in: Sink grep o/p.
1900 Mon Nov 11 14:21:13 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1902         * g77.c (main): Might as well print version number
1903         for --verbose as well.
1905 Thu Nov  7 18:41:41 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1907         * expr.c, lang-options.h, target.h, top.c, top.h: Split out
1908         remaining -fugly stuff into -fugly-logint and -fugly-comma,
1909         leaving -fugly as simply a `macro' that expands into other
1910         options, and eliminate defaults for some of the ugly stuff
1911         in target.h.
1913         * Make-lang.in (gcc-cross): Compile zzz.c, not version.o (!),
1914         in to get version info for this target.
1916         * config-lang.in: Test for GBE patch application based
1917         on whether 2.6.x or 2.7.x GBE is detected.
1919 Wed Nov  6 14:19:45 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1921         * Make-lang.in (g77): Compile zzz.c in to get version info.
1922         * g77.c: Add support for --help and --version.
1924         * g77.c (lookup_option): Short-circuit long-winded tests
1925         when second char is not hyphen, just to save a spot of time.
1927 Sat Nov  2 13:50:31 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1929         * intrin.def: Add FTELL and FSEEK intrinsics, plus new
1930         `g' codes for alternate-return (GOTO) arguments.
1931         * intrin.c (ffeintrin_check_): Support `g' codes.
1932         * com-rt.def: Add ftell_() and fseek_() to database.
1933         * com.c (ffecom_expr_intrinsic_): Ditto.  Also, let each
1934         subroutine intrinsic decide for itself what to do with
1935         tree_type, the default being NULL_TREE once again (so
1936         ffecom_call_ doesn't think it's supposed to cast the
1937         function call to the type in the fall-through case).
1939         * ste.c (ffeste_R909_finish): Don't special-case list-directed
1940         I/O, now that libf2c can return non-zero status codes.
1941         (ffeste_R910_finish): Ditto.
1942         (ffeste_io_call_): Simplify logic.
1943         (ffeste_io_impdo_):
1944         (ffeste_subr_beru_):
1945         (ffeste_R904):
1946         (ffeste_R907):
1947         (ffeste_R909_start):
1948         (ffeste_R909_item):
1949         (ffeste_R909_finish):
1950         (ffeste_R910_start):
1951         (ffeste_R910_item):
1952         (ffeste_R910_finish):
1953         (ffeste_R911_start):
1954         (ffeste_R923A): Ditto all the above.
1956 Thu Oct 31 20:56:28 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1958         * config-lang.in, Make-lang.in: Rename flag file
1959         build-u77 to build-libu77, for consistency with
1960         install-libf2c and such.
1962         * config-lang.in: Don't complain about failure to patch
1963         if pre-2.7.0 gcc is involved (since our patch for that
1964         doesn't add support for tooning).
1966 Sat Oct 26 05:56:51 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1968         * bad.def (FFEBAD_TYPELESS_TOO_LARGE): Remove this
1969         unused and redundant diagnostic.
1971 Sat Oct 26 00:45:42 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1973         * target.c (ffetarget_integerhex): Fix dumb bug.
1975 1996-10-20  Dave Love  <d.love@dl.ac.uk>
1977         * gbe/2.7.2.1.diff: New file.
1979         * Makefile.in (F771_LDFLAGS): Add -bbigtoc for AIX4.1 up, suggested by
1980         endo@material.tohoku.ac.jp [among others!].
1982 Sat Oct 19 03:11:14 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1984         * bad.def, bld.c, bld.h, expr.c, lang-options.h, target.c,
1985         target.h, top.c, top.h (ffebld_constant_new_integerbinary,
1986         ffebld_constant_new_integerhex, ffebld_constant_new_integeroctal,
1987         ffeexpr_token_name_apos_name_, ffetarget_integerbinary,
1988         ffetarget_integerhex, ffetarget_integeroctal): Support
1989         new -fno-typeless-boz option with new functions, mods to
1990         existing octal-handling functions, new macros, new error
1991         messages, and so on.
1993         * com.c, lang-options.h, top.c, top.h (ffecom_notify_primary_entry):
1994         Print program unit name on stderr if -fno-silent (new option).
1996         * lang-options.h, top.c, top.h, stt.c (ffestt_dimlist_as_expr):
1997         Treat ([...,]1) in dimlist as ([...,]*) if -fugly-assumed
1998         (new option).
2000         * lang-options.h: Comment out options duplicated in gcc/toplev.c,
2001         because, somehow, having them commented in and building on my
2002         DEC Alpha results in a cc1 that always segfaults, and gdb that
2003         also segfaults whenever it debugs it up to init_lex() calling
2004         xmalloc() or so.
2006 Thu Oct 17 00:39:27 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2008         * stb.c (ffestb_R10013_): Don't change meaning of .sign until
2009         after previous meaning/value used to set sign of value
2010         (960507-1.f).
2012 Sun Oct 13 22:15:23 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2014         * top.c (ffe_decode_option): Don't set back-end flags
2015         that are nonexistent prior to gcc 2.7.0.
2017 Sun Oct 13 12:48:45 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2019         * com.c (convert): Don't convert emulated complex expr to
2020         real (via REALPART_EXPR) if the target type is (emulated)
2021         complex.
2023 Wed Oct  2 21:57:12 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2025         * com.c (ffecom_debug_kludge_): Set DECL_IN_SYSTEM_HEADER so
2026         -Wunused doesn't complain about these manufactured decls.
2027         (ffecom_expr_): Ditto, for original (non-ASSIGN'ed) variable.
2028         (ffecom_transform_equiv_): Clear DECL_IGNORED_P for aggregate
2029         area so it shows up as a debug-accessible symbol.
2030         (pushdecl): Default for "invented" identifiers (a g77-specific
2031         concept for now) is that they are artificial, in system header,
2032         ignored for debugging purposes, used, and (for types) suppressed.
2033         This ought to be overkill.
2035 Fri Sep 27 23:13:07 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2037         * ste.c (ffeste_begin_iterdo_, ffeste_end_iterdo_): Support
2038         one-trip DO loops (F66-style).
2039         * lang-options.h, top.c, top.h (-fonetrip): New option.
2041 Thu Sep 26 00:18:40 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2043         * com.c (ffecom_debug_kludge_): New function.
2044         (ffecom_sym_transform_): Use new function for COMMON and EQUIVALENCE
2045         members.
2047         * lang-options.h, top.c, top.h (-fno-debug-kludge):
2048         New option.
2049   
2050 1996-09-24  Dave Love  <d.love@dl.ac.uk>
2052         * Make-lang.in (include/f2c.h):
2053         Remove dependencies on xmake_file and tmake_file.
2054         They expand inconsistently in 2.8 c.f. 2.7; $(GCC_PARTS) depends on
2055         them anyhow.
2057 1996-09-22  Dave Love  <d.love@dl.ac.uk>
2059         * config-lang.in: Add --enable-libu77 option handling.
2061         * Make-lang.in:
2062         Conditionally add --enable-libu77 when running runtime configure.
2063         Define LIBU77STAGESTUFF and use it in relevant rules.
2065 1996-08-21  Dave Love  <d.love@dl.ac.uk>
2067         * Make-lang.in (f77-runtime):
2068         `stmp-hdrs' should have been `stmp-headers'.
2070 1996-08-20  Dave Love  <d.love@dl.ac.uk>
2072         * Make-lang.in (f77-runtime):
2073         Depend on stmp-hdrs, not stmp-int-hdrs, since libF77
2074         needs float.h.
2076 Sat Jun 22 18:17:11 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2078         * com.c (ffecom_tree_divide_): Fix RECORD_TYPE case to
2079         look at type of first field, properly, to determine
2080         whether to call c_div or z_div.
2082 Tue Jun  4 04:27:18 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2084         * com.c (ffecom_build_complex_constant_): Explicitly specify
2085         TREE_PURPOSE.
2086         (ffecom_expr_): Fix thinko.
2087         (ffecom_2): For COMPLEX_EXPR, explicitly specify TREE_PURPOSE.
2089 Mon May 27 16:23:43 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2091         Changes to optionally avoid gcc's back-end complex support:
2092         * com.c (ffecom_stabilize_aggregate_): New function.
2093         (ffecom_convert_to_complex_): New function.
2094         (ffecom_make_complex_type_): New function.
2095         (ffecom_build_complex_constant_): New function.
2096         (ffecom_expr_): For opCONVERT of non-COMPLEX to COMPLEX,
2097         don't bother explicitly converting to the subtype first,
2098         because gcc does that anyway, and more code would have
2099         to be added to find the subtype for the emulated-complex
2100         case.
2101         (ffecom_f2c_make_type_): Use ffecom_make_complex_type_
2102         instead of make_node etc. to make a complex type.
2103         (ffecom_1, ffecom_2): Translate operations on COMPLEX operands
2104         to appropriate operations when emulating complex.
2105         (ffecom_constantunion): Use ffecom_build_complex_constant_
2106         instead of build_complex to build a complex constant.
2107         (ffecom_init_0): Change point at which types are laid out
2108         for improved consistency.
2109         Use ffecom_make_complex_type_ instead of make_node etc.
2110         to make a complex type.
2111         Always calculate storage sizes from TYPE_SIZE, never TYPE_PRECISION.
2112         (convert): Use e, not expr, since we've copied into that anyway.
2113         For RECORD_TYPE cases, do emulated-complex conversions.
2114         (ffecom_f2c_set_lio_code_): Always calculate storage sizes
2115         from TYPE_SIZE, never TYPE_PRECISION.
2116         (ffecom_tree_divide_): Allow RECORD_TYPE to also be handled
2117         by run-time library.
2118         (ffecom_expr_intrinsic_): Handle possible RECORD_TYPE as argument
2119         to AIMAG intrinsic.
2121         * top.h, top.c, lang-options.h: Support new -f(no-)emulate-complex option.
2123         * com.c (ffecom_sym_transform_): Clarify and fix typos in comments.
2125 Mon May 20 02:06:27 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2127         * target.h: Use new REAL_VALUE_UNTO_TARGET_* macros instead
2128         of REAL_VALUE_FROM_TARGET_DOUBLE and _SINGLE.
2129         Explicitly use long instead of HOST_WIDE_INT for emulation
2130         of ffetargetReal1 and ffetargetReal2.
2132 1996-05-20  Dave Love  <d.love@dl.ac.uk>
2134         * config-lang.in:
2135         Test for patch being applied with flag_move_all_movables in toplev.c.
2137         * install.texi (Patching GNU Fortran):
2138         Mention overriding X_CFLAGS rather than
2139         editing proj.h on SunOS4.
2141         * Make-lang.in (F77_FLAGS_TO_PASS):
2142         Add X_CFLAGS (convenient for SunOS4 kluge, in
2143         particular).
2144         (f77.{,mostly,dist}clean): Reorder things, in particular not to delete
2145         Makefiles too early.
2147         * g77.c (DEFAULT_SWITCH_TAKES_ARG): Define a la gcc.c in the
2148         current GCC snapshot.
2150 Tue May 14 00:24:07 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2152         Changes for DEC Alpha AXP support:
2153         * com.c (ffecom_init_0): REAL_ARITHMETIC means internal
2154         REAL/DOUBLE PRECISION might well have a different size
2155         than the compiled type, so don't crash if this is the
2156         case.
2157         * target.h: Use `int' for ffetargetInteger1,
2158         ffetargetLogical1, and magical tests.  Set _f format
2159         strings accordingly.
2161 Tue Apr 16 14:08:28 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2163         * top.c (ffe_decode_option): -Wall no longer implies
2164         -Wsurprising.
2166 Sat Apr 13 14:50:06 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2168         * com.c (ffecom_char_args_): If item is error_mark_node,
2169         set *length that way, too.
2171         * com.c (ffecom_expr_power_integer_): If either operand
2172         is error_mark_node, return that.
2174         * com.c (ffecom_intrinsic_len_): If item is error_mark_node,
2175         return that for length.
2177         * expr.c (ffeexpr_declare_unadorned_,
2178         ffeexpr_declare_parenthesized_): Instead of crashing
2179         on unexpected contexts, produce a diagnostic.
2181         * intrin.c (ffeintrin_check_), intrin.def (impSIGNAL):
2182         Allow procedure as second arg to SIGNAL intrinsic.
2184         * stu.c (ffestu_symter_end_transition_): New function.
2185         (ffestu_symter_exec_transition_): Return bool arg.
2186         Always transition symbol (don't inhibit when !whereNONE).
2187         (ffestu_sym_end_transition): If DUMMY/LOCAL arg has any
2188         opANY exprs in its dimlist, diagnose it so it doesn't
2189         make it through to later stages that try to deal with
2190         dimlist stuff.
2191         (ffestu_sym_exec_transition): If sym has any opANY exprs
2192         in its dimlist, diagnose it so it becomes opANY itself.
2194         * symbol.c (ffesymbol_error): If token arg is NULL,
2195         just ANY-ize the symbol -- don't produce diagnostic.
2197 Mon Apr  1 10:14:02 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2199         * Version 0.5.18 released.
2201 Mon Mar 25 20:52:24 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2203         * com.c (ffecom_expr_power_integer_): Don't generate code
2204         that compares COMPLEX (or, as it happens, REAL) via "LT_EXPR",
2205         since the back end crashes on that.  (This code would never
2206         be executed anyway, but the test that avoids it has now been
2207         translated to control whether the code gets generated at all.)
2208         Fixes 960323-3.f.
2210         * com.c (ffecom_type_localvar_): Handle variable-sized
2211         dimension bounds expressions here, so they get calculated
2212         and saved on procedure entry.  Fixes 960323-4.f.
2214         * com.c (ffecom_notify_init_symbol): Symbol has no init
2215         info at all if only zeros have been used to initialize it.
2216         Fixes 960324-0.f.
2218         * expr.c, expr.h (ffeexpr_type_combine): Renamed from
2219         ffeexpr_type_combine_ and now a public procedure; last arg now
2220         a token, instead of an internal structure used to extract a token.
2221         Now allows the outputs to be aliased with the inputs.
2222         Now allows a NULL token to mean "don't report error".
2223         (ffeexpr_reduced_bool2_, ffeexpr_reduced_eqop2_,
2224         ffeexpr_reduced_math2_, ffeexpr_reduced_power_,
2225         ffeexpr_reduced_relop2_): Handle new calling sequence for
2226         ffeexpr_type_combine.
2227         * (ffeexpr_convert): Don't put an opCONVERT node
2228         in just because the size is unknown; all downstream code
2229         should be able to deal without it being there anyway, and
2230         getting rid of it allows new intrinsic code to more easily
2231         combine types and such without generating bad code.
2232         * info.c, info.h (ffeinfo_kindtype_max): Rewrite to do
2233         proper comparison of size of types, not just comparison
2234         of their internal kind numbers (so I2.eq.I1 doesn't promote
2235         I1 to I2, rather the other way around).
2236         * intrin.c (ffeintrin_check_): Combine types of arguments
2237         in COL a la expression handling, for greater flexibility
2238         and permissiveness (though, someday, -fpedantic should
2239         report use of this kind of thing).
2240         Make sure Hollerith/typeless where CHARACTER expected is
2241         rejected.  This all fixes 960323-2.f.
2243         * ste.c (ffeste_begin_iterdo_): Fix some more type conversions
2244         so INTEGER*2-laden DO loops don't crash at compile time on
2245         certain machines.  Believed to fix 960323-1.f.
2247         * stu.c (ffestu_sym_end_transition): Certainly reject
2248         whereDUMMY not in any dummy list, whether stateUNCERTAIN
2249         or stateUNDERSTOOD.  Fixes 960323-0.f.
2251 Tue Mar 19 13:12:40 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2253         * data.c (ffedata_value): Fix crash on opANY, and simplify
2254         the code at the same time.
2256         * Make-lang.in (f77-runtime): Also depends on lib[FI]77/Makefile...
2257         (include/f2c.h...): ...which in turn depend on */Makefile.in.
2258         (f77.rebuilt): Rebuild runtime stuff too.
2260         * intrin.c (ffeintrin_check_): Accommodate TYPELESS/HOLLERITH
2261         types, convert args as necessary, etc.
2263         * expr.c (ffeexpr_convert): Fix test for TYPELESS/HOLLERITH
2264         to obey the docs; crash if no source token when error.
2265         (ffeexpr_collapse_convert): Crash if no token when error.
2267 Mon Mar 18 15:51:30 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2269         * com.c (ffecom_init_zero_): Renamed from
2270         ffecom_init_local_zero_; now handles top-level
2271         (COMMON) initializations too.
2273         * bld.c (ffebld_constant_is_zero):
2274         * com.c (ffecom_symbol_transform_, ffecom_sym_transform_assign_,
2275         ffecom_transform_common_, ffecom_transform_equiv_):
2276         * data.c:
2277         * equiv.c:
2278         * equiv.h:
2279         * lang-options.h:
2280         * stc.c:
2281         * storag.c:
2282         * storag.h:
2283         * symbol.c:
2284         * symbol.h:
2285         * target.c:
2286         * target.h:
2287         * top.c:
2288         * top.h: All of this is mostly housekeeping-type changes
2289         to support -f(no-)zeros, i.e. not always stuff zero
2290         values into the initializer fields of symbol/storage objects,
2291         but still track that they have been given initial values.
2293         * bad.def: Fix wording for DATA-related diagnostics.
2295         * com.c (ffecom_sym_transform_assign_): Don't check
2296         any EQUIVALENCE stuff for local ASSIGN, the check was
2297         bad (crashing), and it's not necessary, anyway.
2299         * com.c (ffecom_expr_intrinsic_): For MAX and MIN,
2300         ignore null arguments as far arg[123], and fix handling
2301         of ANY arguments.  (New intrinsic support now allows
2302         spurious trailing null arguments.)
2304         * com.c (ffecom_init_0): Add HOLLERITH (unsigned)
2305         equivalents for INTEGER*2, *4, and *8, so shift intrinsics
2306         and other things that need unsigned versions of signed
2307         types work.
2309 Sat Mar 16 12:11:40 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2311         * storag.c (ffestorag_exec_layout): Treat adjustable
2312         local array like dummy -- don't create storage object.
2313         * com.c (ffecom_sym_transform_): Allow for NULL storage
2314         object in LOCAL case (adjustable array).
2316 Fri Mar 15 13:09:41 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2318         * com.c (ffecom_sym_transform_): Allow local symbols
2319         with nonconstant sizes (adjustable local arrays).
2320         (ffecom_type_localvar_): Allow dimensions with nonconstant
2321         component (adjustable local arrays).
2322         * expr.c: Various minor changes to handle adjustable
2323         local arrays (a new case of stateUNCERTAIN).
2324         * stu.c (ffestu_sym_end_transition,
2325         ffestu_sym_exec_transition): Ditto.
2326         * symbol.def: Update docs to reflect these changes.
2328         * com.c (ffecom_expr_): Reduce space/time needed for
2329         opACCTER case by handling it here instead of converting
2330         it to opARRTER earlier on.
2331         (ffecom_notify_init_storage): Don't convert ACCTER to ARRTER.
2332         (ffecom_notify_init_symbol): Ditto.
2334         * com.c (ffecom_init_0): Crash and burn if any of the types'
2335         sizes, according to the GBE, disagrees with the sizes of
2336         the FFE's internal implementation.  This might catch
2337         Alpha/SGI bugs earlier.
2339 Fri Mar 15 01:09:41 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2341         * com-rt.def, com.c, com.h: Changes for rewrite of intrinsic
2342         handling.
2343         * com.c (ffecom_arglist_expr_): New function.
2344         (ffecom_widest_expr_type_): New function.
2345         (ffecom_expr_intrinsic_): Reorganize, some rewriting.
2346         (ffecom_f2c_make_type_): Layout complex types.
2347         (ffecom_gfrt_args_): New function.
2348         (ffecom_list_expr): Trivial change for consistency.
2350         * expr.c (ffeexpr_token_name_rhs_): Go back to getting
2351         type from specific, not implementation, info.
2352         (ffeexpr_token_funsubstr_): Set intrinsic implementation too!
2353         * intrin.c: Major rewrite of most portions.
2354         * intrin.def: Major rearchitecting of tables.
2355         * intrin.h (ffeintrin_basictype, ffeintrin_kindtype):
2356         Now (once again) take ffeintrinSpec as arg, not ffeintrinImp;
2357         for now, these return NONE, since they're not really needed
2358         and adding the necessary info to the tables is not trivial.
2359         (ffeintrin_codegen_imp): New function.
2360         * stc.c (ffestc_R1208_item): Change way ffeintrin funcs called,
2361         back to original per above; but comment out the code anyway.
2363         * intrin.c (ffe_init_0): Do internal checks only if
2364         -fset-g77-defaults not specified.
2366         * lang-options.h: Add -fset-g77-defaults option.
2367         * lang-specs.h: Always pass -fset-g77-defaults.
2368         * top.c, top.h: New option.
2370 Sat Mar  9 17:49:50 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2372         * Make-lang.in (stmp-int-hdrs): Use --no-validate when
2373         generating the f77.rebuilt files (BUGS, INSTALL, NEWS)
2374         so cross-references can work properly in g77.info
2375         without a lot of hassle.  Users can probably deal with
2376         the way they end up looking in the f77.rebuilt files.
2378         * bld.c (ffebld_constant_new_integer4_val): INTEGER*8
2379         support -- new function.
2380         (ffebld_constant_new_logical4_val): New function.
2381         * com.c (ffecom_f2c_longint_type_node): New type.
2382         (FFECOM_rttypeLONGINT_): New return type code.
2383         (ffecom_expr_): Add code to invoke pow_qq instead
2384         of pow_ii for INTEGER4 (INTEGER*8) case.
2385         If ffecom_expr_power_integer_ returns NULL_TREE, just do
2386         the usual work.
2387         (ffecom_make_gfrt_): Handle new type.
2388         (ffecom_expr_power_integer_): Let caller do the work if in
2389         dummy-transforming case, since
2390         caller now knows about INTEGER*8 and such, by returning
2391         NULL_TREE.
2392         * expr.c (ffeexpr_reduced_power_): Complain about non-INTEGER
2393         raised to INTEGER4 (INTEGER*8) power.
2395         * target.c (ffetarget_power_integerdefault_integerdefault):
2396         Fix any**negative.
2397         * com.c (ffecom_expr_power_integer_): Fix (-1)**(-8) and similar
2398         to ABS() the integral result if the exponent is negative
2399         and even.
2401         * ste.c (ffeste_begin_iterdo_): Clean up a type ref.
2402         Always convert iteration count to _default_ INTEGER.
2404         * sta.c (ffesta_second_): Add BYTE and WORD type/stmts;
2405         changes by Scott Snyder <snyder@d0sgif.fnal.gov>.
2406         * stb.c (ffestb_decl_recursive): Ditto.
2407         (ffestb_decl_recursive): Ditto.
2408         (ffestb_decl_entsp_2_): Ditto.
2409         (ffestb_decl_entsp_3_): Ditto.
2410         (ffestb_decl_funcname_2_): Ditto.
2411         (ffestb_decl_R539): Ditto.
2412         (ffestb_decl_R5395_): Ditto.
2413         * stc.c (ffestc_establish_declstmt_): Ditto.
2414         * std.c (ffestd_R539item): Ditto.
2415         (ffestd_R1219): Ditto.
2416         * stp.h: Ditto.
2417         * str-1t.fin: Ditto.
2418         * str-2t.fin: Ditto.
2420         * expr.c (ffeexpr_finished_): For DO loops, allow
2421         any INTEGER type; convert LOGICAL (assuming -fugly)
2422         to corresponding INTEGER type instead of always default
2423         INTEGER; let later phases do conversion of DO start,
2424         end, incr vars for implied-DO; change checks for non-integral
2425         DO vars to be -Wsurprising warnings.
2426         * ste.c (ffeste_io_impdo_): Convert start, end, and incr
2427         to type of DO variable.
2429         * com.c (ffecom_init_0): Add new types for [IL][234],
2430         much of which was done by Scott Snyder <snyder@d0sgif.fnal.gov>.
2431         * target.c: Ditto.
2432         * target.h: Ditto.
2434 Wed Mar  6 14:08:45 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2436         * top.c (ffe_init_gbe_): Make -frerun-loop-opt the default.
2438 Mon Mar  4 12:27:00 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2440         * expr.c (ffeexpr_exprstack_push_unary_): Really warn only
2441         about two successive _arithmetic_ operators.
2443         * stc.c (ffestc_R522item_object): Allow SAVE of (understood)
2444         local entity.
2446         * top.c (ffe_decode_option): New -f(no-)second-underscore options.
2447         * top.h: New options.
2448         * com.c (ffecom_get_external_identifier_, ffecom_get_identifier_):
2449         New options.
2451         * Make-lang.in (f77.maintainer-clean): Clean f/BUGS, f/INSTALL,
2452         f/NEWS.
2453         ($(srcdir)/f/BUGS, $(srcdir)/f/INSTALL, $(srcdir)/f/NEWS):
2454         New rules.
2455         ($(srcdir)/f/g77.info, $(srcdir)/f/g77.dvi): Depend on
2456         f/bugs.texi and f/news.texi.
2457         (f77.install-man): Install f77 man pages (if enabled).
2458         (f77.uninstall): Uninstall info docs, f77 man pages (if enabled).
2460         * top.c (ffe_init_gbe_): New function.
2461         (ffe_decode_option, ffe_file): Call ffe_init_gbe_ to
2462         set defaults for gcc options.
2464 Sat Jan 20 13:57:19 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2466         * com.c (ffecom_get_identifier_): Eliminate needless
2467         comparison of results of strchr.
2469 Tue Dec 26 11:41:56 1995  Craig Burley  <burley@gnu.ai.mit.edu>
2471         * Make-lang.in: Add rules for new files g77.texi, g77.info,
2472         and g77.dvi.
2473         Reorganize the *clean rules to more closely parallel gcc's.
2475         * config-lang.in: Exclude g77.info from diffs.
2477 Sun Dec 10 02:29:13 1995  Craig Burley  <burley@gnu.ai.mit.edu>
2479         * expr.c (ffeexpr_declare_unadorned_,
2480         ffeexpr_declare_parenthesized_): Break out handling of
2481         contextDATAIMPDO[INDEX,CTRL] so it's independent of symbol state.
2482         Don't exec-transition these here (let ffeexpr_sym_impdoitem_
2483         handle that when appropriate).  Don't "declare" them twice.
2485 Tue Dec  5 06:48:26 1995  Craig Burley  <burley@gnu.ai.mit.edu>
2487         * stc.c (ffestc_promote_sfdummy_): Allow whereNONE parent
2488         symbol, since it is not necessarily known whether it will
2489         become LOCAL or DUMMY.
2491 Mon Dec  4 03:46:55 1995  Craig Burley  <burley@gnu.ai.mit.edu>
2493         * lex.c (ffelex_display_token, ffelex_type_string_): Resurrect
2494         these from their old versions and update them for possible invocation
2495         from debugger.
2496         * lex.h (ffelex_display_token): Declare this in case anyone
2497         else wants to call it.
2499         * lex.c (ffelex_total_tokens_): Have this reflect actual allocated
2500         tokens, no longer include outstanding "uses" of tokens.
2502         * malloc.c, malloc.h (MALLOC_DEBUG): New macro to control
2503         checking of whether callers follow rules, now defaults to 0
2504         for "no checking" to improve compile times.
2506         * malloc.c (malloc_pool_kill): Fix bug that could prevent
2507         subpool from actually being killed (wasn't setting its use
2508         count to 1).
2510         * proj.h, *.c (dmpout): Replace all occurrences of `stdout'
2511         and some of `stderr' with `dmpout', so where to dump debugging
2512         output can be easily controlled during build; add default
2513         for `dmpout' of `stderr' to proj.h.
2515 Sun Dec  3 00:56:29 1995  Craig Burley  <burley@gnu.ai.mit.edu>
2517         * com.c (ffecom_return_expr): Eliminate attempt at warning
2518         about unset return values, since the back end does this better,
2519         with better wording, and is not triggered by clearly working
2520         (but spaghetti) code as easily as this test.
2522 Sat Dec  2 08:28:56 1995  Craig Burley  <burley@gnu.ai.mit.edu>
2524         * target.c (ffetarget_power_*_integerdefault): Raising 0 to
2525         integer constant power should not be an error condition;
2526         if so, other code should catch 0 to any power, etc.
2528         * bad.def (FFEBAD_BAD_POWER): 0**integer now a warning instead
2529         of an error.
2531 Fri Dec  1 00:12:03 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2533         * bad.def: Clarify diagnostic regarding complex constant elements.
2534         * expr.c (ffeexpr_cb_comma_c_): Capitalize real/imaginary
2535         for clarified diagnostic.
2537         * com.c (ffecom_close_include_): Close the file!
2539         * lex.c (ffelex_file_fixed): Update line info if the line
2540         has any content, not just if it finishes a previous line
2541         or has a label.
2542         (ffelex_file_free): Clarify switch statement code.
2544 Sat Nov 18 19:37:22 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2546         * Version 0.5.17 released.
2548 Fri Nov 17 14:27:24 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2550         * Make-lang.in: Fix typo in comment.
2552         * Makefile.in (f/fini.o, f/proj-h.o): Don't use `$<' since
2553         not all makes support it (e.g. NeXT make), use explicit
2554         source name instead (with $(srcdir) and munging).
2555         (ASSERT_H): assert.h lives in source dir, not build dir.
2557 Thu Nov 16 12:47:50 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2559         * com.c (ffecom_init_0): Fix dumb bug in code to produce
2560         warning message about non-32-bit-systems.
2562         * stc.c (ffestc_R501_item): Parenthesize test to make
2563         warning go away (and perhaps fix bug).
2565 Thu Nov 16 03:43:33 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2567         * g77.c: Upgrade to 2.7.0's gcc.c.
2568         Fix -v to pass a temp name instead of "/dev/null" for "-o".
2570 Fri Nov 10 19:16:05 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2572         * ste.c (ffeste_begin_iterdo_): Add Toon's change to
2573         make loops faster on some machines (implement termination
2574         condition as "--i >= 0" instead of "i-- > 0").
2576 Thu Nov  2 03:58:17 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2578         * Make-lang.in: Remove unnecessary $(exeext) a la cp/Make-lang.in.
2580         * com.c (ffecom_expr_): Restore old strategy for assignp variant
2581         of opSYMTER case...always return the ASSIGN version of var.
2582         That way, `-O -Wuninitialized' will catch "I=3;GOTO I;END"
2583         (though the diagnostic will refer to `__g77_ASSIGN_i').
2585         * com.c (ffecom_expr_power_integer_): For constant rhs case,
2586         wrap every new eval of lhs in save_expr() so it is clear to
2587         back end that MULT_EXPR(lhs,lhs) has identical operands,
2588         otherwise for an rhs like 32767 it generates around 65K pseudo
2589         registers, with which stupid_life_analysis cannot cope
2590         (due to reg_renumber in regs.h being `short *' instead of
2591         `int *').
2593         * com.c (ffecom_expr_): Speed up implementation of LOGICAL
2594         versions of opNOT, opAND, opOR, opXOR/opNEQV, and opEQV by
2595         assuming the values actually are kosher LOGICAL bit patterns.
2596         Also simplify code that implements some of the INTEGER versions
2597         of these.
2599         * com.c (skip_redundant_dir_prefix, read_name_map,
2600         ffecom_open_include_, signed_type, unsigned_type): Fold in
2601         changes to cccp.c made from 2.7.0 through ss-950826.
2603         * equiv.c (ffeequiv_layout_local_): Kill the equiv list
2604         if no syms in list.
2606         * expr.c (ffeexpr_reduced_eqop2_): Issue specific diagnostic
2607         regarding usage of .EQV./.NEQV. in preference to .EQ./.NE..
2609         * intrin.c: Add ERF and ERFC as generic intrinsics.
2610         intrin.def: Same.
2612         * sta.c (ffesta_save_, ffesta_second_): Whoever calls
2613         ffestd_exec_begin must also set ffesta_seen_first_exec = TRUE,
2614         and anytime stc sees an exec transition, it must do both.
2615         stc.c (ffestc_eof): Same.
2617         * stc.c (ffestc_promote_sfdummy_): If failed implicit typing
2618         or CHARACTER*(*) arg, after calling ffesymbol_error, don't
2619         reset info to ENTITY/DUMMY, because ffecom_sym_transform_
2620         doesn't expect such a thing with ANY/ANY type.
2622         * target.h (*logical*): Change some of these so they parallel
2623         changes in com.c, e.g. for _eqv_, use (l)==(r) instead of
2624         !!(l)==!!(r), to get a more faithful result.
2626 Fri Oct 27 07:06:59 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2628         * com.c (ffecom_sym_transform_): Simplify code for local
2629         EQUIVALENCE case.
2631         * expr.c (ffeexpr_exprstack_push_unary_): Warn about two
2632         successive operators.
2633         (ffeexpr_exprstack_push_binary_): Warn about "surprising"
2634         operator precedence, as in "-2**2".
2636         * lang-options.h: Add -W(no-)surprising options.
2638         * parse.c (yyparse): Don't reset -fpedantic if not -pedantic.
2640         * top.c (ffe_decode_option): Support new -Wsurprising option.
2641         * top.h: Ditto.
2643 Mon Oct 23 09:14:15 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2645         * com.c (ffecom_finish_symbol_transform_): Don't transform
2646         NONE/NONE (CHARACTER*(*)) vars, as these don't mean anything
2647         in debugging terms, and can't be turned into anything
2648         in the back end (so ffecom_sym_transform_ crashes on them).
2650         * com.c (ffecom_expr_): Change strategy for assignp variant
2651         of opSYMTER case...always return the original var unless
2652         it is not wide enough.
2654         * ste.c (ffeste_io_cilist_): Clarify diagnostic for ASSIGN
2655         involving too-narrow variable.  This shouldn't happen, though.
2656         (ffeste_io_icilist_): Ditto.
2657         (ffeste_R838): Ditto.
2658         (ffeste_R839): Ditto.
2660 Thu Oct 19 03:21:20 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2662         * com.c (ffecom_sym_transform_assign_): Set TREE_STATIC
2663         using the same decision-making process as used for their twin
2664         variables, so ASSIGN can last across RETURN/CALL as appropriate.
2666 Fri Sep 22 20:21:18 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2668         * Makefile.in: fini is a host program, so it needs a host-compiled
2669         version of proj.o, named proj-h.o.  f/fini, f/fini.o, and
2670         f/proj-h.o targets updated accordingly.
2672         * com.c (__eprintf): New function.
2674 Wed Sep 20 02:26:36 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2676         * lang-options.h: Add omitted -funix-intrinsics-* options.
2678         * malloc.c (malloc_find_inpool_): Check for infinite
2679         loop, crash if detected (user reports encountering
2680         them in some large programs, this might help track
2681         down the bugs).
2683 Thu Sep  7 13:00:32 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2685         * com.c (lang_print_error_function): Don't dereference null
2686         pointer when outside any program unit.
2687         (ffecom_let_char_, ffecom_arg_ptr_to_expr): If catlist
2688         item or length ever error_mark_node, don't continue processing,
2689         since back-end functions like build_pointer_type crash on
2690         error_mark_node's (due to pushing bad obstacks, etc.).
2692 Wed Aug 30 15:58:35 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2694         * Version 0.5.16 released.
2696 Mon Aug 28 12:24:20 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2698         * bad.c (ffebad_finish): Fix botched message when no places
2699         are printed (due to unknown line info, etc.).
2701         * std.c (ffestd_subr_labels_): Do a better job finding
2702         line info in the case of typeANY and diagnostics.
2704 Fri Aug 25 15:19:29 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2706         * com.c (DECL_ARTIFICIAL): Surround all references to this
2707         macro with #if !BUILT_FOR_270 and #endif.
2708         (init_lex): Surround print_error_function decl with
2709         #if !BUILT_FOR_270 and #endif.
2710         (lang_init): Call new ffelex_hash_kludge function to solve
2711         problem with preprocessed files that have INCLUDE statements.
2713         * lex.c (ffelex_getc_): New function.
2714         (ffelex_cfelex_): Use ffelex_getc_ instead of getc in any
2715         paths of code that can be affected by ffelex_hash_kludge.
2716         Don't make an EOF token for unrecognized token; set token
2717         to NULL instead, to avoid problems when not initialized.
2718         (ffelex_hash_): Use ffelex_getc_ instead of getc in any
2719         paths of code that can be affected by ffelex_hash_kludge.
2720         Test token returned by ffelex_cfelex_ for NULL, meaning
2721         unrecognized token.
2722         Get rid of useless used_up variable.
2723         Don't do ffewhere stuff or kill any tokens if in
2724         ffelex_hash_kludge.
2725         (ffelex_file_fixed, ffelex_file_free): Use ffelex_getc_
2726         instead of getc in any paths of code that can be affected
2727         by ffelex_hash_kludge.
2728         (ffelex_hash_kludge): New function.
2730         * lex.h (ffelex_hash_kludge): New function.
2732 Wed Aug 23 15:17:40 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2734         * com.c: Implement -f(no-)underscoring options by always
2735         compiling in code to do it, and having that code inhibit
2736         itself when -fno-underscoring is in effect.  This option
2737         overrides -f(no-)f2c for this purpose; -f(no-)f2c returns
2738         to it's <=0.5.15 behavior of affecting only how code
2739         is generated, not how/whether names are mangled.
2741         * target.h: Redo specification of appending underscores so
2742         the macros are named "_default" instead of "_is" and the
2743         two-underscore macro defaults to 1.
2745         * top.c, top.h (underscoring): Add appropriate stuff
2746         for the -f(no-)underscoring options.
2748 Tue Aug 22 10:25:01 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2750         * bad.c (ffebad_finish): Call report_error_function (in toplev.c)
2751         to better identify location of problem.
2752         Say "(continued):" instead of "(continued:)" for consistency.
2754         * com.c (ffecom_gen_sfuncdef_): Set and reset new
2755         ffecom_nested_entry_ variable to hold ffesymbol being compiled.
2756         (lang_print_error_function): New function from toplev.c.
2757         Use ffecom_nested_entry_ to help determine which name
2758         and kind-string to print.
2759         (ffecom_expr_intrinsic_): Handle EXIT and FLUSH invocations
2760         with different calling sequences than library functions.
2761         Have SIGNAL and SYSTEM push and pop calltemps, and convert
2762         their return values to the destination type (just in case).
2763         (FFECOM_rttypeINT_): New return type for `int', in case
2764         gcc/f/runtime/libF77/system_.c(system_) is really supposed
2765         to return `int' instead of `ftnint'.
2767         * com.h (report_error_function): Declare this.
2769         * equiv.c (ffeequiv_layout_local_): Don't forget to consider
2770         root variable itself as possible "first rooted variable",
2771         else might never set symbol and then crash later.
2773         * intrin.c (ffeintrin_check_exit_): Change to allow no args
2774         and rename to ffeintrin_check_int_1_o_ for `optional'.
2775         #define ffeintrin_check_exit_ and _flush_ to this new
2776         function, so intrin.def can refer to the appropriate names.
2778         * intrin.def (FFEINTRIN_impFLUSH): Validate using
2779         ffeintrin_check_flush_ so passing an INTEGER arg is allowed.
2781         * lex.c (ffelex_file_push_, ffelex_file_pop_): New functions
2782         to manage input_file_stack in gbe.
2783         (ffelex_hash_): Call new functions (instead of doing code).
2784         (ffelex_include_): Call new functions to update stack for
2785         INCLUDE (_hash_ handles cpp output of #include).
2787 Mon Aug 21 08:09:04 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2789         * Makefile.in: Put `-W' in front of every `-Wall', since
2790         2.7.0 requires that to engage `-Wunused' for parameters.
2792         * com.c: Mark all parameters as artificial, so
2793         `-W -Wunused' doesn't complain about unused ones (since
2794         there's no way right not to individually specify attributes
2795         like `unused').
2797         * proj.h: Don't #define UNUSED if already defined, regardless
2798         of host compiler.
2800 Sun Aug 20 16:03:56 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2802         * gbe/2.7.0.diff: Regenerate.
2804         * lang-options.h, lang-specs.h: If not __STDC__ (ANSI C),
2805         avoid doing anything, especially the stringizing in -specs.h.
2807 Thu Aug 17 03:36:12 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2809         * lang-specs.h: Remove useless optional settings of -traditional,
2810         since -traditional is always set anyway.
2812 Wed Aug 16 16:56:46 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2814         * Make-lang.in (F2C_INSTALL_FLAG, F2CLIBOK): More
2815         control over whether to install f2c-related stuff.
2816         (install-f2c-*): New targets to install f2c-related
2817         stuff in system, not just gcc, directories.
2819         * com.c: Change calls to ffecom_get_invented_identifier
2820         to use generally more predictable names.
2821         Change calls to build_range_type to ensure consistency
2822         of types of operands.
2823         (ffecom_get_external_identifier_): Change to accept
2824         symbol info, not just text, so it can use f2c flag for
2825         symbol to decide whether to append underscore(s).
2826         (ffecom_get_identifier_): Don't change names if f2c flag
2827         off for compilation.
2828         (ffecom_type_permanent_copy_): Use same type for new max as
2829         used for min.
2830         (ffecom_notify_init_storage): Offline fixups for stand-alone.
2832         * data.c (ffedata_gather): Explicitly test for common block,
2833         since it's no longer always the case that a local EQUIVALENCE
2834         group has no symbol ptr (it now can, if a user-predictable
2835         "rooted" symbol has been identified).
2837         * equiv.c: Add some debugging stuff.
2838         (ffeequiv_layout_local_): Set symbol ptr with user-predictable
2839         "rooted" symbol, for giving the invented aggregate a
2840         predictable name.
2842         * g77.c (append_arg): Allow for 20 extra args instead of 10.
2843         (main): For version-only case, add `-fnull-version' and, unless
2844         explicitly omitted, `-lf2c -lm'.
2846         * lang-options.h: New "-fnull-version" option.
2848         * lang-specs.h: Support ".fpp" suffix for preprocessed source
2849         (useful for OS/2, MS-DOS, other case-insensitive systems).
2851         * stc.c (ffestc_R544_equiv_): Swap way lists are merged so this
2852         is consistent with the order in which lists are built, making
2853         user predictability of invented aggregate name much higher.
2855         * storag.c, storag.h (FFESTORAG_typeDUMMY): Delete this enum.
2857         * top.c: Accept, but otherwise ignore, `-fnull-version'.
2859 Tue Aug 15 07:01:07 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2861         * DOC, INSTALL, PROJECTS: Extensive improvements to documentation.
2863 Sun Aug 13 01:55:18 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2865         * INSTALL (f77-install-ok): Document the use of this file.
2867         * Make-lang.in (F77_INSTALL_FLAG): New flag to control
2868         whether to install an `f77' command (based on whether
2869         a file named `f77-install-ok' exists in the source or
2870         build directory) to replace the broken attempt to use
2871         comment lines to avoid installing `f77' (broken in the
2872         sense that it prevented installation of `g77').
2874 Mon Aug  7 06:14:26 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2876         * DOC: Add new sections for g77 & gcc compiler options,
2877         source code form, and types, sizes and precisions.
2878         Remove lots of old "delta-version" info, or at least
2879         summarize it.
2881         * INSTALL: Add info here that used to be in DOC.
2882         Other changes.
2884         * g77.c (lookup_option, main): Check for --print-* options,
2885         so we avoid adding version-determining stuff.
2887 Wed Jul 26 15:51:03 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2889         * Make-lang.in, Makefile.in (input.j, INPUT_H): New file.
2890         Update dependencies accordingly.
2892         * bad.c (ffebad_here): Okay to use unknown line/col.
2894         * compilers.h (@f77-cpp-input): Remove -P option now that
2895         # directives are handled by f771.  Update other options
2896         to be more consistent with @c in gcc/gcc.c.  Don't run f771
2897         if -E specified, etc., a la @c.
2898         (@f77): Don't run f771 if -E specified, etc., a la @c.
2900         * config-lang.in: Avoid use of word "guaranteed".
2902         * input.j: New file to wrap around gcc/input.h.
2904         * lex.j: Add support for parsing # directives output by cpp.
2905         (ffelex_cfebackslash_): New function.
2906         (ffelex_cfelex_): New function.
2907         (ffelex_get_directive_line_): New function.
2908         (ffelex_hash_): New function.
2909         (ffelex_include_): Change to not use ffewhere_file_(begin|end).
2910         Also fix bug in pointing to next line (for diagnostics, &c)
2911         following successful INCLUDE.
2912         (ffelex_next_line_): New function that does chunk of code
2913         seen in several places elsewhere in the lexers.
2914         (ffelex_file_fixed): Delay finishing statement until source
2915         line is registered with ffewhere, so INCLUDE processing
2916         picks up the info correctly.
2917         Okay to kill or use unknown line/col objects now.
2918         Handle HASH (#) lines.
2919         Reorder tests for insubstantial lines to put most frequent
2920         occurrences at top, for possible minor speedup.
2921         Some general consolidation of code.
2922         (ffelex_file_free): Handle HASH (#) lines.
2923         Okay to kill or use unknown line/col objects now.
2924         Some general consolidation of code.
2925         (ffelex_init_1): Detect HASH (#) lines.
2926         (ffelex_set_expecting_hollerith): Okay to kill or use unknown
2927         line/col objects now.
2929         * lex.h (FFELEX_typeHASH): New enum.
2931         * options-lang.h (-fident, -fno-ident): New options.
2933         * stw.c (ffestw_update): Okay to kill unknown line/col objects
2934         now.
2936         * target.h (FFETARGET_okREALQUAD, FFETARGET_okCOMPLEXDOUBLE,
2937         FFETARGET_okCOMPLEXQUAD): #define these appropriately.
2939         * top.c: Include flag.j wrapper, not flags.h directly.
2940         (ffe_is_ident_): New flag.
2941         (ffe_decode_option): Handle -fident and -fno-ident.
2942         (ffe_file): Replace obsolete ffewhere_file_(begin|end) with
2943         ffewhere_file_set.
2945         * top.h (ffe_is_ident_, ffe_is_ident, ffe_set_is_ident):
2946         New flag and access functions.
2948         * where.c, where.h: Remove all tracking of parent file.
2949         (ffewhere_file_begin, ffewhere_file_end): Delete these.
2950         (ffewhere_line_use): Make it work with unknown line object.
2952 Mon Jul 17 03:04:09 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2954         * com.c (ffecom_sym_transform_): Set DECL_IN_SYSTEM_HEADER
2955         flag for any local vars used as stmtfunc dummies or DATA
2956         implied-DO iter vars, so no -Wunused warnings are produced
2957         for them (a la f2c).
2958         (ffecom_init_0): Do "extern int xargc;" for IARGC() intrinsic.
2959         Warn if target machine not 32 bits, since g77 isn't yet
2960         working on them at all well.
2962         * expr.c (ffeexpr_sym_lhs_call_, ffeexpr_sym_lhs_data_,
2963         ffeexpr_sym_lhs_extfunc_, ffeexpr_sym_rhs_actualarg_,
2964         ffeexpr_sym_rhs_let_, ffeexpr_paren_rhs_let_): Don't
2965         gratuitously set attr bits that don't apply just
2966         to avoid null set meaning error; instead, use explicit
2967         error flag, and allow null attr set, to
2968         fix certain bugs discovered by looking at this code.
2970         * g77.c: Major changes to improve support for gcc long options,
2971         to make `g77 -v' report more useful info, and so on.
2973 Mon Jul  3 14:49:16 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2975         * DOC, com.c, intrin.h, intrin.c, intrin.def, target.h, top.c,
2976         top.h: Add new `unix' group of intrinsics, which includes the
2977         newly added ERF, ERFC, EXIT, plus even newer ABORT, DERF, DERFC,
2978         FLUSH, GETARG, GETENV, SIGNAL, and SYSTEM.
2980 Tue Jun 27 23:01:05 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2982         * bld.c, bld.h (ffebld_constant_pool,
2983         ffebld_constant_character_pool): Use a single macro (the
2984         former) to access the pool for allocating constants, instead
2985         of latter in public and FFEBLD_CONSTANT_POOL_ internally
2986         in bld.c (which was the only one that was correct before
2987         these changes).  Add verification of integrity of certain
2988         heap-allocated areas.
2990         * com.c (ffecom_overlap_, ffecom_args_overlap_,
2991         ffecom_tree_canonize_ptr_, ffecom_tree_canonize_ref_): New
2992         functions to optimize calling COMPLEX and, someday, CHARACTER
2993         functions requiring additional argument to be passed.
2994         (ffecom_call_, ffecom_call_binop_, ffecom_expr_,
2995         ffecom_expr_intrinsic_): Change calling
2996         sequences to include more info on possible destination.
2997         (ffecom_expr_intrinsic_): Add ERF(), ERFC(), and EXIT()
2998         intrinsic code.
2999         (ffecom_sym_transform_): For assumed-size arrays, set high
3000         bound to highest possible value instead of low bound, to
3001         improve validity of overlap checking.
3002         (duplicate_decls): If olddecl and newdecl are the same,
3003         don't do any munging, just return affirmative.
3005         * expr.c: Change ffecom_constant_character_pool() to
3006         ffecom_constant_pool().
3008         * info.c (ffeinfo_new): Compile this version if not being
3009         compiled by GNU C.
3011         * info.h (ffeinfo_new): Don't define macro if not being
3012         compiled by GNU C.
3014         * intrin.c, intrin.def: Add ERF(), ERFC(), and EXIT() intrinsics.
3015         (ffeintrin_check_exit_): New for EXIT() subroutine intrinsic.
3017         * malloc.c, malloc.h (malloc_verify_*): New functions to verify
3018         integrity of heap-storage areas.
3020         * stc.c (ffestc_R834, ffestc_R835): Handle possibility that
3021         an enclosing DO won't have a construct name even when the
3022         CYCLE/EXIT does (i.e. without dereferencing NULL).
3024         * target.c, target.h (ffetarget_verify_character1): New function
3025         to verify integrity of heap storage used to hold character constant.
3027 Thu Jun 22 15:36:39 1995  Howard Gordon  (flash@super.org)
3029         * stp.h (ffestpVxtcodeIx): Fix typo in typedef for this.
3031 Mon May 29 15:22:31 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3033         * *: Make all sorts of changes to accommodate upcoming gcc-2.7.0.
3034         I didn't keep track of them, nor just when I made them, nor
3035         when I (much later, probably in early August 1995) modified
3036         them so they could properly handle both 2.7.0 and 2.6.x.
3038         * com.c (ffecom_expr_power_integer_): Don't expand_start_stmt_expr
3039         if transforming dummy args, because the back end cannot handle
3040         that (it's rejected by the gcc front end), just generate
3041         call to run-time library.
3042         Back out changes in 0.5.15 because more temporaries might be
3043         needed anyway (for COMPLEX**INTEGER).
3044         (ffecom_push_tempvar): Remove inhibitor.
3045         Around start_decl and finish_decl (in particular, arround
3046         expand_decl, which is called by them), push NULL_TREE into
3047         sequence_rtl_expr, an external published by gcc/function.c.
3048         This makes sure the temporary is truly in the function's
3049         context, not the inner context of a statement-valued expression.
3050         (I think the back end is inconsistent here, but am not
3051         interested in convincing the gbe maintainers about this now.)
3052         (pushdecl): Make sure that when pushing PARM_DECLs, nothing
3053         other than them are pushed, as happened for 0.5.15 and which,
3054         if done for other reasons not fixed here, might well indicate
3055         some other problem -- so crash if it happens.
3057         * equiv.c (ffeequiv_layout_local_): If the local equiv group
3058         has a non-nil COMMON field, it should mean that an error has
3059         occurred and been reported, so just trash the local equiv
3060         group and do nothing.
3062         * stc.c (ffestc_promote_sfdummy_): Set sfdummy arg state to
3063         UNDERSTOOD so above checking for duplicate args actually
3064         works, and so we don't crash later in pushdecl.
3066         * ste.c (ffeste_R1001): Set initial value only for VAR_DECLs,
3067         not for, e.g., LABEL_DECLs, which the FORMAT label can be
3068         if it was previously treated as an executable label.
3070 Sat May 20 01:53:53 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3072         * com.c (ffecom_sym_transform_): For adjustable arrays,
3073         pass high bound through variable_size in case its primaries
3074         are changed (dumb0.f, and this might also improve
3075         performance so it approaches f2c|gcc).
3077 Fri May 19 11:00:36 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3079         * Version 0.5.15 released.
3081         * com.c (ffecom_expr_power_integer_): Push temp vars
3082         before expanding a statement expression, since that seems
3083         to cause temp vars to be "forgotten" after the end of the
3084         expansion in the back end.  Disallow more temp-var
3085         pushing during such an expansion, just in case.
3086         (ffecom_push_tempvar): Crash if a new variable needs to be
3087         pushed but cannot be at this point (should never happen).
3089 Wed May 17 12:26:16 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3091         * expr.c (ffeexpr_collapse_convert): Add code to convert
3092         LOGICAL to CHARACTER.  Reject conversion of REAL or COMPLEX
3093         to CHARACTER entirely, as it cannot be supported with all
3094         configurations.
3096         * target.h, target.c (ffetarget_convert_character1_logical1):
3097         New function.
3099 Sun May 14 00:00:09 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3101         * com.c (ffecom_do_entry_, ffecom_gen_sfuncdef_,
3102         ffecom_start_progunit_, ffecom_sym_transform_,
3103         ffecom_init_0, start_function): Changes to have REAL
3104         external functions return same type as DOUBLE PRECISION
3105         external functions when -ff2c is in force; while at it,
3106         some code cleanups done.
3108         * stc.c (ffestc_R547_item_object): Disallow array declarator
3109         if one already exists for symbol.
3111         * ste.c (ffeste_R1227): Convert result variable to type
3112         of function result as seen by back end (e.g. for when REAL
3113         external function actually returns result as double).
3115         * target.h (FFETARGET_defaultFIXED_LINE_LENGTH): New
3116         macro for default for -ffixed-line-length-N option.
3118         * top.c (ffe_fixed_line_length_): Initialize this to new
3119         target.h macro instead of constant 72.
3121 Tue May  9 01:20:03 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3123         * lex.c (ffelex_send_token_): If sending CHARACTER token with
3124         null text field, put a single '\0' in it and set length/size
3125         fields to 0 (to fix 950508-0.f).
3126         (ffelex_image_char_): When setting ffelex_bad_line_ to TRUE,
3127         always "close" card image by appending a null char and setting
3128         ffelex_card_length_.  As part of this, append useful text
3129         to identify the two kinds of problems that involve this.
3130         (ffelex_file_fixed): Reset ffelex_bad_line_ to FALSE after
3131         seeing a line with invalid first character (fixes 950508-1.f).
3132         If final nontab column is zero, assume tab seen in line.
3133         (ffelex_card_image_): Always make this array 8 characters
3134         longer than reflected by ffelex_card_size_.
3135         (ffelex_init_1): Get final nontab column info from top instead
3136         of assuming 72.
3138         * options-lang.h: Add -ffixed-line-length- prefix.
3140         * top.h: Add ffe_fixed_line_length() and _set_ version, plus
3141         corresponding extern.
3143         * top.c: Handle -ffixed-line-length- option prefix.
3145 Fri Apr 28 05:40:25 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3147         * Version 0.5.14 released.
3149         * Make-lang.in: Add assert.j.
3151         * Makefile.in: Add assert.j.
3153         * assert.j: New file.
3155 Thu Apr 27 16:24:22 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3157         * bad.h (ffebad_severity): New function.
3159         * bad.c (ffebad_severity): New function.
3161         * bad.def (FFEBAD_OPEN_INCLUDE): Change severity from SEVERE
3162         to FATAL, since processing continues, and that seems fine.
3164         * com.c: Add facility to handle -I.
3165         (ffecom_file, ffecom_close_include, ffecom_open_include,
3166         ffecom_decode_include_option): New global functions for -I.
3167         (ffecom_file_, ffecom_initialize_char_syntax_,
3168         ffecom_close_include_, ffecom_decode_include_option_,
3169         ffecom_open_include_, append_include_chain, open_include_file,
3170         print_containing_files, read_filename_string, file_name_map,
3171         savestring): New internal functions for -I.
3173         * compilers.h: Pass -I flag(s) to f771 (via "%{I*}").
3175         * lex.c (ffelex_include_): Call ffecom_close_include
3176         to close include file, for its tracking needs for -I,
3177         instead of using fclose.
3179         * options-lang.h: Add -I prefix.
3181         * parse.c (yyparse): Call ffecom_file for main input file,
3182         so -I handling works (diagnostics).
3184         * std.c (ffestd_S3P4): Have ffecom_open_include handle
3185         opening and diagnosing errors with INCLUDE files.
3187         * ste.c (ffeste_begin_iterdo_): Use correct algorithm for
3188         calculating # of iterations -- mathematically similar but
3189         computationally different algorithm was not handling cases
3190         like "DO I=6,5,2" correctly, because (5-6)/2+1 => 1, not 0.
3192         * top.c (ffe_decode_option): Allow -I, restructure a bit
3193         for clarity and, maybe, speed.
3195 Mon Apr 17 13:31:11 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3197         * g77.c: Remove -lc, turns out not all systems has it, but
3198         leave other changes in for clarity of code.
3200 Sun Apr 16 21:50:33 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3202         * com.c (ffecom_expr_): Implement ARRAY_EXPR as INDIRECT_REF
3203         of appropriate PLUS_EXPRs of ptr_to_expr of array, to see
3204         if this generates better code.  (Conditional on
3205         FFECOM_FASTER_ARRAY_REFS.)
3207 Sun Apr 16 00:22:48 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3209         * Make-lang.in (F77_SRCS): Remove g77.c, since it doesn't
3210         contribute to building f771.
3212         * Makefile.in (dircheck): Remove/replace with f/Makefile, because
3213         phony targets that are referenced in other real targets get run
3214         when those targets are specified, which is a waste of time (e.g.
3215         when rebuilding and only g77.c has changed, f771 was being linked
3216         anyway).
3218         * g77.c: Include -lc between -lf2c and -lm throughout.
3220         * implic.c (ffeimplic_establish_symbol): If -Wimplicit, warn if
3221         implicit type given to symbol.
3223         * lex.c (ffelex_include_): Don't gratuitously increment line
3224         number here.
3226         * top.h, top.c (ffe_is_warn_implicit_): New global variable and
3227         related access macros.
3228         (ffe_decode_option): Handle -W options, including -Wall and
3229         -Wimplicit.
3231         * where.c (ffewhere_line_new): Don't muck with root line (was
3232         crashing on null input since lexer changes over the past week
3233         or so).
3235 Thu Apr 13 16:48:30 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3237         * com.c (ffecom_init_0): Register built-in functions for cos,
3238         sin, and sqrt.
3239         (ffecom_tree_fun_type_double): New variable.
3240         (ffecom_expr_intrinsic_): Update f2c input and output files
3241         to latest version of f2c (no important g77-related changes
3242         noted, just bug fixes to f2c and such).
3243         (builtin_function): New function from c-decl.c.
3245         * com-rt.def: Refer to built-in functions for cos, sin, and sqrt.
3247 Thu Apr 13 10:25:09 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3249         * com.c (ffecom_expr_intrinsic_): Convert 0. to appropriate
3250         type to keep DCMPLX(I) from crashing the compiler.
3251         (ffecom_expr_): Don't convert result from ffecom_tree_divide_.
3252         (ffecom_tree_divide_): Add tree_type argument, have all callers
3253         pass one, and don't convert right-hand operand to it (this is
3254         to make this new function work as much like the old in-line
3255         code used in ffecom_expr_ as possible).
3257         * lex.c: Maintain lineno and input_filename the way the gcc
3258         lexer does.
3260         * std.c (ffestd_exec_end): Save and restore lineno and
3261         input_filename around the second pass, which sets them
3262         appropriately for each saved statement.
3264 Wed Apr 12 09:44:45 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3266         * com.c (ffecom_expr_power_integer_): New function.
3267         (ffecom_expr_): Call new function for power op with integer second
3268         argument, for generating better code.  Also replace divide
3269         code with call to new ffecom_tree_divide_ function.
3270         Canonicalize calls to ffecom_truth_value(_invert).
3271         (ffecom_tree_divide_): New function.
3273 Wed Apr  5 14:15:44 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3275         * lex.c: Change to allocate text for tokens only when actually
3276         needed, which should speed compilation up somewhat.
3277         Change to allow INCLUDE at any point where a statement
3278         can end, i.e. in ffelex_finish_statement_ or when a SEMICOLON
3279         token is sent.
3280         Remove some old, obsolete code.
3281         Clean up layout of entire file to improve formatting,
3282         readability, etc.
3283         (ffelex_set_expecting_hollerith): Remove include argument.
3285 Fri Mar 31 23:19:08 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3287         * bad.h, bad.c (ffebad_start_msg, ffebad_start_msg_lex):
3288         New functions to generate arbitrary messages.
3289         (FFEBAD_severityPEDANTIC): New severity, to correspond
3290         to toplev's pedwarn() function.
3292         * lex.c (ffelex_backslash_): New function to implement
3293         backslash processing.
3294         (ffelex_file_fixed, ffelex_file_free): Implement new
3295         backslash processing.
3297         * std.c (ffestd_R1001dump_): Don't assume CHARACTER and
3298         HOLLERITH tokens stop at '\0' characters, now that backslash
3299         processing is supported -- use their advertised lengths instead,
3300         and double up the '\002' character for libf2c.
3302 Mon Mar 27 17:10:33 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3304         * com.c (ffecom_init_local_zero_): Implement -finit-local-zero.
3305         (ffecom_sym_transform_): Same.
3306         (ffecom_transform_equiv_): Same.
3308         * options-lang.h: Add -f(no-)(init-local-zero,backslash,ugly-init).
3310         * stb.c (ffestb_V020): Reject "TYPEblah(...", which might be
3311         an array assignment.
3313         * target.h, top.h, top.c: Implement -finit-local-zero.
3315 Fri Mar 24 19:56:22 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3317         * Make-lang.in, Makefile.in: Remove conf-proj(.in) and
3318         proj.h(.in) rules, plus related config.log, config.cache,
3319         and config.status stuff.
3321         * com.c (ffecom_init_0): Change messages when atof(), bsearch(),
3322         or strtoul() do not work as expected in the start-up test.
3324         * conf-proj, conf-proj.in: Delete.
3326         * lex.c (ffelex_file_fixed): Allow f2c's '&' in column 1
3327         to mean continuation line.
3329         * options-lang.h: New file, #include'd by ../toplev.c.
3331         * proj.h.in: Rename back to proj.h.
3333         * proj.h (LAME_ASSERT): Remove.
3334         (LAME_STDIO): Remove.
3335         (NO_STDDEF): Remove.
3336         (NO_STDLIB): Remove.
3337         (NO_BSEARCH): Remove auto detection, rename to !FFEPROJ_BSEARCH.
3338         (NO_STRTOUL): Remove auto detection, rename to !FFEPROJ_STRTOUL.
3339         (USE_HOST_LIMITS): Remove (maybe still needed by stand-alone?).
3340         (STR, STRX): Do only ANSI C definitions.
3342 Mon Mar 13 10:46:13 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3344         * BUGS: Add item about g77 requiring gcc to compile it.
3346         * NEWS: New file listing user-visible changes in the release.
3348         * PROJECTS: Update to include a new item or two, and modify
3349         or delete items that are addressed in this or previous releases.
3351         * bad.c (ffebad_finish): Don't crash if missing string &c,
3352         just substitute obviously distressed string "[REPORT BUG!!]"
3353         for cases where the message/caller are fudgy.
3355         * bad.def: Clean up error messages in a major way, add new ones
3356         for use by changes in target.c.
3358         * com.c (ffecom_expr_): Handle opANY in opCONVERT.
3359         (ffecom_let_char_): Disregard destinations with ERROR_MARK.
3360         (ffecom_1, ffecom_1_fn, ffecom_2, ffecom_2s, ffecom_3,
3361         ffecom_3s, &c): Check all inputs for error_mark_node.
3362         (ffecom_start_progunit_): Don't transform all symbols
3363         in BLOCK DATA, since it never executes, and it is silly
3364         to, e.g., generate all the structures for NAMELIST.
3365         (ffecom_char_length_expr_): Rename to ffecom_intrinsic_len_.
3366         (ffecom_intrinsic_ichar_): New function to handle ICHAR of
3367         arbitrary expression with possible 0-length operands.
3368         (ffecom_expr_intrinsic_): Use ffecom_intrinsic_char_.
3369         For MVBITS, set tree_type to void_type_node.
3370         (ffecom_start_progunit_): Name master function for entry points
3371         after primary entry point so users can easily guess it while
3372         debugging.
3373         (ffecom_arg_ptr_to_expr): Change treatment of Hollerith,
3374         Typeless, and %DESCR.
3375         (ffecom_expr_): Change treatment of Hollerith.
3377         * data.c (ffedata_gather_): Handle opANY in opCONVERT.
3379         * expr.c (ffeexpr_token_apostrophe_): Issue FFEBAD_NULL_CHAR_CONST
3380         warning as necessary.
3381         (ffeexpr_token_name_rhs_): Set context for args to intrinsic
3382         so that assignment-like concatenation is allowed for ICHAR(),
3383         IACHAR(), and LEN() intrinsics.
3384         (ffeexpr_reduced_*_): Say "an array" instead of "an entity" in
3385         diagnostics, since it's more informative.
3386         (ffeexpr_finished_): For many contexts, check for null expression
3387         and array before trying to do a conversion, to avoid redundant
3388         diagnostics.
3390         * g77.1: Fix typo for preprocessed suffix (.F, not .f).
3392         * global.c (ffeglobal_init_common): Warn if initializing
3393         blank common.
3394         (ffeglobal_pad_common): Enable code to warn if initial
3395         padding needed.
3396         (ffeglobal_size_common): Complain if enlarging already-
3397         initialized common, since it won't work right anyway.
3399         * intrin.c: Add IMAG() intrinsic.
3400         (ffeintrin_check_loc_): Allow opSUBSTR in LOC().
3402         * intrin.def: Add IMAG() intrinsic.
3404         * lex.c: Don't report FFEBAD_NULL_CHAR_CONST errors.
3406         * sta.c, sta.h, stb.c: Changes to clean up error messages (see
3407         bad.def).
3409         * stb.c (ffestb_R100113_): Issue FFEBAD_NULL_CHAR_CONST
3410         warning as necessary.
3412         * stc.c (ffestc_shriek_do_): Don't try to reference doref_line
3413         stuff in ANY case, since it won't be valid.
3414         (ffestc_R1227): Allow RETURN in main program unit, with
3415         appropriate warnings/errors.
3416         (ffestc_subr_format_): Array of any type is a CHAREXPR (F77 C5).
3418         * ste.c (ffeste_begin_doiter_): Couple of fixes to accurately
3419         determine if loop never executes.
3421         * target.c (ffetarget_convert_*_hollerith_): Append spaces,
3422         not zeros, to follow F77 Appendix C, and to warn when
3423         truncation of non-blanks done.
3424         (ffetarget_convert_*_typeless): Rewrite to do typeless
3425         conversions properly, and warn when truncation done.
3426         (ffetarget_print_binary, ffetarget_print_octal,
3427         ffetarget_print_hex): Rewrite to use new implementation of
3428         typeless.
3429         (ffetarget_typeless_*): Rewrite to use new implementation
3430         of typeless, and to warn about overflow.
3432         * target.h (ffetargetTypeless): New implementation of
3433         this type.
3435         * type.h, type.c (ffetype_size_typeless): Remove (incorrect)
3436         implementation of this function and its extern.
3438 Sun Mar  5 18:46:42 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3440         * BUGS: Clarify that constant handling would also fix lack of
3441         adequate IEEE-754/854 support to some degree, and typeless
3442         and non-decimal constants.
3444         * com.c (ffecom_type_permanent_copy_): Comment out to avoid
3445         warnings.
3446         (duplicate_decls): New function a la gcc/c-decl.c.
3447         (pushdecl): Use duplicate_decls to decide whether to return
3448         existing decl or new one, instead of always returning existing
3449         decl.
3450         (ffecom_expr_): opPERCENT_LOC now supports CHARACTER arguments.
3451         (ffecom_init_0): Give f2c I/O code 0 for basictypeANY/kindtypeANY.
3452         (ffecom_sym_transform_): For adjustable arrays, pass low bound
3453         through variable_size in case its primaries are changed (950302-1.f).
3455         * com.h: More decls that belong in tree.h &c.
3457         * data.c (ffedata_eval_integer1_): Fix opPAREN case to not
3458         treat value of expression as an error code.
3460         * expr.c (ffeexpr_finished_): Allow opSUBSTR in contextLOC case.
3462         * proj.c: Add "const" as appropriate.
3464 Mon Feb 27 10:04:03 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3466         * bad.def (FFEBAD_BAD_SUBSTR): Fix bad grammar in message.
3468 Fri Feb 24 16:21:31 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3470         * Version 0.5.13 released.
3472         * INSTALL: Warn that f/zzz.o will compare differently between
3473         stages, since it puts the __TIME__ macro into a string.
3475         * com.c (ffecom_sym_transform_): Transform kindFUNCTION/whereDUMMY
3476         to pointer-to-function, not function.
3477         (ffecom_expr_): Use ffecom_arg_ptr_to_expr instead of
3478         ffecom_char_args_ to handle comparison between CHARACTER
3479         types, so either operand can be a CONCATENATE.
3480         (ffecom_transform_common_): Set size of initialized common area
3481         to global (largest-known) size, even though size of init might
3482         be smaller.
3484         * equiv.c (ffeequiv_offset_): Check symbol info for ANY.
3486         * expr.c (ffeexpr_find_close_paren_, ffeexpr_nil_*): New functions
3487         to handle following the contour of a rejected expression, so
3488         statements like "PRINT(I,I,I)=0" don't cause the PRINT statement
3489         code to get the second passed back to it as if there was a
3490         missing close-paren before it, the comma causing the PRINT code
3491         to confirm the statement, resulting in an ambiguity vis-a-vis
3492         the let statement code.
3493         Use the new ffecom_find_close_paren_ handler when an expected
3494         close-paren is missing.
3495         (ffeexpr_isdigits_): New function, use in all places that
3496         currently use isdigit in repetitive code.
3497         (ffeexpr_collapse_symter): Collapse to ANY if init-expr is ANY,
3498         so as to avoid having symbol get "transformed" if used to
3499         dimension an array.
3500         (ffeexpr_token_real_, ffeexpr_token_number_real_): Don't issue
3501         diagnostic about exponent, since it'll be passed along the
3502         handler path, resulting in a diagnostic anyway.
3503         (ffeexpr_token_apos_char_): Use consistent handler path
3504         regardless of whether diagnostics inhibited.
3505         (ffeexpr_token_name_apos_name_): Skip past closing quote/apos
3506         even if not a match or other diagnostic issued.
3507         (ffeexpr_sym_impdoitem_): Exec-transition local SEEN symbol.
3509         * lex.c (ffelex_image_char_): Set ffelex_saw_tab_ if TAB
3510         seen, not if anything other than TAB seen!
3512         * stc.c (ffestc_R537_item): If source is ANY but dest isn't,
3513         set dest symbol's init expr to ANY.
3514         (ffestc_R501_attrib, ffestc_R522, ffestc_R522start): Complain
3515         about conflict between "SAVE" by itself and other uses of
3516         SAVE only in pedantic mode.
3518         * ste.c (ffeste_R1212): Fix loop over labels to always
3519         increment caseno, to avoid pushcase returning 2 for duplicate
3520         values when one of the labels is invalid.
3522 Thu Feb 23 12:42:04 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3524         * Version 0.5.12 released.
3526         * Make-lang.in (f77.install-common): Add "else true;" before outer
3527         "fi" per Makefile.in patch.
3529         * Makefile.in (dircheck): Add "else true;" before "fi" per
3530         patch from chs1pm@surrey.ac.uk.
3532         * com.c (ffecom_push_tempvar): If type desired is ERROR_MARK,
3533         return error_mark_node, to avoid crash that results from
3534         making a VAR_DECL with error_mark_node as its type.
3536         * ste.c (ffeste_begin_iterdo_): Convert itercount to INTEGER
3537         anytime calculation of number of iterations ends up with type
3538         other than INTEGER (e.g. DOUBLE PRECISION, REAL).
3540 Thu Feb 23 02:48:38 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3542         * Version 0.5.11 released.
3544         * DOC: Explain -fugly-args.
3546         * bad.def (FFEBAD_ACTUALARG): Explain -fugly-args and how to
3547         rewrite code to not require it.
3549         * com.c (ffecom_vardesc_): Handle negative type code, just in
3550         case.
3551         (ffecom_arg_ptr_to_expr): Let ffecom_expr handle hollerith
3552         and typeless constants (move code to ffecom_constantunion).
3553         (ffecom_constantunion): Handle hollerith and typeless constants.
3555         * expr.c (ffecom_finished_): Check -fugly-args in actual-arg
3556         context where hollerith/typeless provided.
3558         * intrin.def (FFEINTRIN_genDFLOAT): Add FFEINTRIN_specDFLOAT.
3559         (FFEINTRIN_specDFLOAT): Add as f2c intrinsic.
3561         * target.h (ffetarget_convert_real[12]_integer,
3562         ffetarget_convert_complex[12]_integer): Pass -1 for high integer
3563         value if low part is negative.
3564         (FFETARGET_defaultIS_UGLY_ARGS): New macro.
3566         * top.c (ffe_is_ugly_args_): New variable.
3567         (ffe_decode_option): Handle -fugly-args and -fno-ugly-args.
3569         * top.h (ffe_is_ugly_args_, ffe_is_ugly_args(),
3570         ffe_set_is_ugly_args()): New variable and macros.
3572 Thu Feb 23 02:48:38 1995  Pedro A M Vazquez  (vazquez@iqm.unicamp.br)
3574         * g77.c (sys_errlist): Use const for __FreeBSD__ systems
3575         as well.
3577 Wed Feb 22 13:33:43 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3579         * Version 0.5.10 released.
3581         * CREDITS: Add Rick Niles.
3583         * INSTALL: Note how to get around lack of makeinfo.
3585         * Make-lang.in (f/proj.h): Remove # comment.
3587         * Makefile.in (f/proj.h): Remove # comment.
3589         * com.c (ffecom_expr_): Simplify opFUNCREF/opSUBRREF conversion.
3590         (ffecom_sym_transform_): For whereGLOBAL and whereDUMMY
3591         kindFUNCTION, use ffecom_tree_fun_type[][] only for non-constant
3592         (non-statement-function) f2c functions.
3593         (ffecom_init_0): ffecom_tree_fun_type[][] and _ptr_to_*_* are
3594         really f2c-interface arrays, so use base type void for COMPLEX
3595         (like CHARACTER).
3597 Tue Feb 21 19:01:18 1995  Dave Love  <d.love@dl.ac.uk>
3599         * Make-lang.in (f77.install-common): Expurgate the test for and
3600         possible installation of f2c in line with elsewhere.  Seems to have
3601         been missing a semicolon anyhow!
3603 Tue Feb 21 11:45:25 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3605         * Version 0.5.9 released.
3607         * Make-lang.in (f/proj.h): touch file to register update,
3608         because the previous commands won't necessarily modify it.
3610         * Makefile.in (f/proj.h): touch file to register update,
3611         because the previous commands won't necessarily modify it.
3613         * Makefile.in (f/str-*.h, f/str-*.j): Explicitly specify
3614         output file names, so these targets go in build, not source,
3615         directory.
3617         * bits.c, bits.h: Switch to valid ANSI C replacement for
3618         ARRAY_ZERO.
3620         * com.c (ffecom_expr_): Add assignp arg to support ASSIGN better.
3621         If assignp is TRUE, use different tree for FFEBLD_opSYMTER case.
3622         (ffecom_sym_transform_assign_): New function.
3623         (ffecom_expr_assign): New function.
3624         (ffecom_expr_assign_w): New function.
3626         * com.c (ffecom_f2c_make_type_): Do make_signed_type instead
3627         of make_unsigned_type throughout.
3629         * com.c (ffecom_finish_symbol_transform_): Expand scope of
3630         commented-out code to probably produce faster compiler code.
3632         * com.c (ffecom_gen_sfuncdef_): Push/pop calltemps so
3633         COMPLEX works right.
3634         Remove obsolete comment.
3636         * com.c (ffecom_start_progunit_): If non-multi alt-entry
3637         COMPLEX function, primary (static) entry point returns result
3638         directory, not via extra arg -- to agree with ffecom_return_expr
3639         and others.
3640         Pretransform all symbols so statement functions are defined
3641         before any code emitted.
3643         * com.c (ffecom_finish_progunit): Don't posttransform all
3644         symbols here -- pretransform them instead.
3646         * com.c (ffecom_init_0): Don't warn about possible ASSIGN
3647         crash, as this shouldn't happen now.
3649         * com.c (ffecom_push_tempvar): Fix to handle temp vars
3650         pushed while context is a statement (nested) function, and
3651         add appropriate commentary.
3653         * com.c (ffecom_return_expr): Check TREE_USED to determine
3654         where return value is unset.
3656         * com.h (struct _ffecom_symbol_): Add note about length_tree
3657         now being used to keep tree for ASSIGN version of symbol.
3659         * com.h (ffecom_expr_assign, ffecom_expr_assign_rw): New decls.
3660         (error): Add this prototype for back-end function.
3662         * fini.c (main): Grab input, output, and include names
3663         directly off the command line instead of making the latter
3664         two out of the first.
3666         * lex.c: Improve tab handling for both fixed and free source
3667         forms, and ignore carriage-returns on input, while generally
3668         improving the code.  ffelex_handle_tab_ has been renamed and
3669         reinvented as ffelex_image_char_, among other things.
3671         * malloc.c, malloc.h: Switch to valid ANSI C replacement for
3672         ARRAY_ZERO, and kill the full number of bytes in pools and
3673         areas.
3675         * proj.h.in (ARRAY_ZERO, ARRAY_ZERO_SIZE): Remove.
3677         * ste.c (ffeste_io_cilist_, ffeste_io_icilist_, ffeste_R838,
3678         ffeste_R839): Issue diagnostic if a too-narrow variable used in an
3679         ASSIGN context despite changes to this code and code in com.c.
3681         * where.c, where.h: Switch to valid ANSI C replacement for
3682         ARRAY_ZERO.
3684 Fri Feb 17 03:35:19 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3686         * Version 0.5.8 released.
3688         * INSTALL: In quick-build case, list g77 target first so g77
3689         gets installed.  Also, explain that gcc gets built and installed
3690         as well, even though this isn't really what we want (and maybe
3691         we'll find a way around this someday).
3693 Fri Feb 17 02:35:41 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3695         * Version 0.5.7 released.
3697         * Makefile.in (CONFIG_H, HCONFIG_H, TCONFIG_H, TM_H): Remove
3698         ../ prefix in front of .h files, since they're in the cd.
3700 Fri Feb 17 01:50:48 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3702         * Version 0.5.6 released.
3704 Thu Feb 16 20:26:54 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3706         * ../README.g77: Remove description of g77 as "not-yet-published".
3708         * CREDITS: More changes.
3710         * Make-lang.in (G77STAGESTUFF): Remove cktyps stuff.
3712         * Makefile.in (CONFIG_H, HCONFIG_H, TCONFIG_H, TM_H): Don't
3713         prefix gcc dir with $(srcdir) since these don't live there,
3714         they are created in the build dir by gcc's configure.  Add
3715         a note explaining what these macros are about.
3716         Update dependencies via deps-kinda.
3718         * README.NEXTSTEP: Credit Toon, and per his request, add his
3719         email address.
3721         * com.h (FFECOM_DETERMINE_TYPES): #include "config.j".
3723         * config.j, convert.j, flags.j, hconfig.j, rtl.j, tconfig.j,
3724         tm.j, tree.j: Don't #include if already done.
3726         * convert.j: #include "tree.j" first, as convert.h clearly depends
3727         on trees being defined.
3729         * rtl.j: #include "config.j" first, since there's some stuff
3730         in rtl.h that assumes it has been #included.
3732         * tree.j: #include "config.j" first, or real.h makes inconsistent
3733         decision about return type of ereal_atof, leading to bugs, and
3734         because tree.h/real.h assume config.h already included.
3736 Wed Feb 15 14:40:20 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3738         * Version 0.5.5 released.
3740         * Copyright notices updated to be FSF-style.
3742         * INSTALL: Some more clarification regarding building just f77.
3744         * Make-lang.in (F77_SRCS): Update wrt changing some .h to .j.
3745         (install-libf77): Fix typo in new parenthetical note.
3747         * Makefile.in (f/*.o): Update.
3748         (CONFIG_H, CONVERT_H, FLAGS_H, GLIMITS_H, HCONFIG_H, RTL_H,
3749         TCONFIG_H, TM_H, TREE_H): Update/new symbols.
3750         (deps-kinda): More fixes wrt changing some .h to .j.
3751         Document and explain this rule a bit better.
3752         Accommodate changes in output of gcc -MM.
3754         * *.h, *.c: Change #include's so proj.h not assumed to #include
3755         malloc.h or config.h (now config.j), and so new .j files are
3756         used instead of old .h ones.
3758         * com.c (ffecom_init_0): Use FLOAT_TYPE_SIZE for f2c's
3759         TYLONG/TYLOGICAL type codes, to get g77 working on Alpha.
3761         * com.h: Make all f2c-related integral types "int", not "long
3762         int".
3764         * config.j, convert.j, flags.j, glimits.j, hconfig.j, rtl.j,
3765         tconfig.j, tm.j, tree.j: New files wrapping around gbe
3766         .h files.
3768         * config.h, convert.h, flags.h, glimits.h, hconfig.h, rtl.h,
3769         tconfig.h, tm.h, tree.h: Deleted so new .j files
3770         can #include the gbe files directly, instead of using "../",
3771         and thus do better with various kinds of builds.
3773         * proj.h: Delete unused NO_STDDEF and related stuff.
3775 Tue Feb 14 08:28:08 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3777         * BUGS: Remove item #12, cross-compiling & autoconf scripts
3778         reportedly expected to work properly (according to d.love).
3780         * INSTALL: Add explanation of d.love's patch to config-lang.in.
3781         Add explanation of how to install just g77 when gcc already installed.
3782         Add note about usability of "-Wall".  Add note about bug-
3783         reporting.
3785         * Make-lang.in ($(srcdir)/f/conf-proj): Add comment about why
3786         conf-proj.out.
3787         (install-libf77): Echo parenthetical note to user about how to do
3788         just the (aborted) libf2c installation.
3789         (deps-kinda): Update to work with new configuration/build stuff.
3791         * bad.c (ffebad_finish): Put capitalized "warning:" &c message
3792         as prefix on any diagnostic without pointers into source.
3794         * bad.def (FFEBAD_TOO_BIG_INIT): Add this warning message.
3796         * config-lang.in: Add Dave Love's patch to catch case where
3797         back-end patches not applied and abort configuration.
3799         * data.c (ffedata_gather_, ffedata_value_): Warn when about
3800         to initialize a large aggregate area, due to design flaw resulting
3801         in too much time/space used to handle such cases.
3802         Use COMMON area name, and first notice of symbol, for multiple-
3803         initialization diagnostic, instead of member symbol and unknown
3804         location.
3805         (FFEDATA_sizeTOO_BIG_INIT_): New macro per above.
3807 Mon Feb 13 13:54:26 1995  Dave Love  <d.love@dl.ac.uk>
3809         * Make-lang.in (F77_SRCS): Use $(srcdir)/f/proj.h.in, not
3810         $(srcdir)/f/proj.h for build outside srcdir.
3812 Sun Feb 12 13:37:11 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3814         * ../README.g77: Clarify procedures for unpacking, add asterisks
3815         to mark important things the user must do.
3817         * Fix dates in/add dates to ../README.g77, BUGS, CREDITS, DOC,
3818         INSTALL, PROJECTS, README.
3820 Sun Feb 12 00:26:10 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3822         * Version 0.5.4 released.
3824         * Make-lang.in (f/proj.h): Reproduce this rule here from
3825         Makefile.in.
3826         ($(srcdir)/f/conf-proj): Put autoconf's stdout in temp file
3827         conf-proj.out, then mv to conf-proj only if successful, so
3828         conf-proj not touched if autoconf not installed.
3830         * Makefile.in ($(srcdir)/conf-proj): See Make-lang.in's similar
3831         rule.
3833 Sat Feb 11 20:56:02 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3835         * BUGS: Clarify some bugs.
3837         * DOC: Many improvements and fixes.
3839         * README: Move bulk of text, edited, to ../README.g77, and
3840         replace with pointer to that file.
3842         * com.c (ffecom_init_0): Comment out warning about sizeof(ftnlen)
3843         as per ste.c change.  Add text about ASSIGN to help user understand
3844         what is being warned about.
3846         * conf-proj.in: Fix typos in comments.
3848         * proj.h.in: Add ARRAY_ZERO_SIZE to parallel malloc.h's version,
3849         in case it proves to be needed.
3851         * ste.c: Comment out assertions requiring sizeof(ftnlen) >=
3852         sizeof(char *), in the hopes that overflow will never happen.
3853         (ffeste_R838): Change assertion to fatal() with at least
3854         partially helpful message.
3856 Sat Feb 11 12:38:00 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3858         * com.c (ffecom_vardesc_): Crash if typecode is -1.
3860         * ste.c (ffeste_io_dolio_): Crash if typecode is -1.
3862 Sat Feb 11 09:51:57 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3864         * ste.c: In I/O code tests for item arrayness, sort of revert
3865         to much earlier code that tests original exp, but also check
3866         in newer way just in case.  Newer way alone treated FOO(1:40)
3867         as an array, not sure why older way alone didn't work, but I
3868         think maybe it was when diagnosed code was involved, and
3869         since there are now checks for error_mark_node, maybe the old
3870         way alone would work.  But better to be safe; both original
3871         ffebld exp _and_ the transformed tree must indicate an array
3872         for the size-determination code to be used, else just 1/2 elements
3873         assumed.  And this text is for EMACS: (foo at bar).
3875 Fri Feb 10 11:05:50 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3877         * ste.c: In many cases, surround statement-expansion code
3878         with ffecom_push_calltemps () and ffecom_pop_calltemps ()
3879         so COMPLEX-returning functions can have temporaries pushed
3880         in "auto-pop" mode and have them auto-popped at the end of
3881         the statement.
3883 Wed Feb  8 14:35:10 1995  Dave Love  <d.love@dl.ac.uk>
3885         * runtime/f2c.h.in (ftnlen, ftnint): Make same size as integer.
3887         * runtime/libI77/err.c (f_init): Thinko in MISSING_FILE_ELEMS
3888         conditional.
3889         * runtime/libI77/wrtfmt.c (mv_cur): Likewise.
3890         * runtime/libI77/wsfe.c (x_putc): Likewise.
3892         * runtime/libF77/signal_.c (signal_): Return 0 (this is a
3893         subroutine).
3895         * Makefile.in (f/proj.h): Depend on com.h.
3896         * Make-lang.in (include/f2c.h): Likewise (and proj.h).
3897         (install-libf77): Also install f2c.h.
3899         * runtime/libI77/Makefile.in (*.o): Add f2c.h dependency.
3900         * runtime/libF77/Makefile.in:  Likewise.
3902 Wed Feb  8 13:56:47 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3904         * stc.c (ffestc_R501_item): Don't reset kind/where to NONE when
3905         setting basictype/kindtype info for symbol, or especially
3906         its function/result twin, because kind/where might not be NONE.
3908 Tue Feb  7 14:47:26 1995  Dave Love  <d.love@dl.ac.uk>
3910         * Make-lang.in (include/f2c.h:): Set shell variable src more
3911         robustly (independent of whether srcdir is relative or absolute).
3912         * Makefile.in (f/proj.h:): Likewise.
3914         * conf-proj.in: Check need for LAME_ASSERT.  Fix indentation in
3915         check for LAME_STDIO (cosmetic only with ANSI C).
3917         * com.h: Extra ...SIZE stuff taken from com.c.
3919         * com.c (FFECOM_DETERMINE_TYPES): Define before including com.h.
3920         (BITS_PER_WORD etc.) Remove and use conditional definitions to com.h.
3922         * runtime/configure.in: #define FFECOM_DETERMINE_TYPES for com.h in
3923         f2c type determination.
3925         * tm.h: Remove (at least pro tem) because of relative path and use
3926         top-level one.
3928         * Make-lang.in (include/f2c.h:): Set shell variable src more
3929         robustly (independent of whether srcdir is relative or absolute).
3930         * Makefile.in (f/proj.h:): Likewise.
3932 Mon Feb  6 19:58:32 1995  Dave Love  <d.love@dl.ac.uk>
3934         * g77.c (append_arg): Use K&R declaration for, e.g. SunOS4 build.
3936 Fri Feb  3 20:33:14 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3938         * g77.c (main): Treat -l like filename in terms of -x handling.
3939         Rewrite arglist mechanism for ease of maintenance.
3940         Make sure every -lf2c is followed by -lm and vice versa.
3942         * Make-lang.in: Put complete list of sources in F77_SRCS def
3943         so changing a .h file, for example, causes rebuild.
3945         * Makefile.in: Change test for nextstep to m68k-next-nextstep* so
3946         all versions of nextstep on m68k get the necessary flag.
3948 Fri Feb  3 19:10:32 1995  Dave Love  <d.love@dl.ac.uk>
3950         * INSTALL: Note about possible conflict with existing libf2c.a and
3951         f2c.h.
3953         * Make-lang.in (f77.distclean): Tidy and move deletion of
3954         f/config.cache to mostlyclean.
3955         (install-libf77): Test for $(libdir)/libf2c.* and barf if found
3956         unless F2CLIBOK defined.
3958         * runtime/Makefile.in (all): Change path to include directory (and
3959         elsewhere).
3960         (INCLUDES): Remove (unused/misleading).
3961         (distclean): Include f2c.h.
3962         (clean): Include config.cache.
3964         * runtime/libF77/Makefile.in (.SUFFIXES): Correct typo.
3965         (ALL_CFLAGS) Fix up include search path to find f2c.h in top level
3966         includes always.
3967         (all): Depend on f2c.h.
3968         * runtime/libI77/Makefile.in (.SUFFIXES): Likewise.
3970 Thu Feb  2 17:17:06 1995  Dave Love  <d.love@dl.ac.uk>
3972         * INSTALL: Note about --srcdir and GNU make.
3974         * runtime/f2c.h.in (Pad_UDread, ALWAYS_FLUSH): Reomve the #defines
3975         per below.
3977         * runtime/configure.in (Pad_UDread, ALWAYS_FLUSH): Define these
3978         here, not in f2c.h as they'r eonly relevant for building.
3979         * runtime/configure: Regenerated.
3981         * config-lang.in: Warn about using GNU make outside source tree
3982         since I can't get Irix5 or SunOS4 makes to work in this case.
3984         * Makefile.in (VPATH): Don't set it here.
3985         (srcdir): Make it the normal `.' (overridden) at top level.
3986         (all.indirect): New dependency `dircheck'.
3987         (f771): Likewise
3988         (dircheck): New target for foolproofing.
3989         (f/proj.h:): Change finding source.
3990         (CONFIG_H): Don't use this as the relative path in the include loses
3991         f builddir != srcdir.
3993         * config.h: Remove per CONFIG_H change above.
3995         * Make-lang.in (F77_FLAGS_TO_PASS): Remove GCC_FOR_TARGET.
3996         (f771:): Pass VPATH, srcdir to sub-make.
3997         (f/Makefile:): New target.
3998         (stmp-int-hdrs): new variable for cheating build.
3999         (f77-runtime:): Alter GCC_FOR_TARGET treatment.
4000         (include/f2c.h f/runtime/Makefile:) Likewise.
4001         (f77-runtime-unsafe:): New (cheating) target.
4003 Thu Feb  2 12:09:51 1995  Craig Burley  (burley@gnu.ai.mit.edu)
4005         * BUGS: Update regarding losing EQUIVALENCE members in -g, and
4006         regarding RS/6000 problems in the back end.
4008         * CREDITS: Make some changes as requested.
4010         * com.c (ffecom_member_trunk_): Remove unused static variable.
4011         (ffecom_finish_symbol_transform_): Improve comments.
4012         (ffecom_let_char_): Fix size of temp address-type var.
4013         (ffecom_member_phase2_): Try fixing problem fixed by change
4014         to ffecom_transform_equiv_ (f_m_p2_ function currently not used).
4015         (ffecom_transform_equiv_): Remove def of unused static variable.
4016         Comment-out use of ffecom_member_phase2_, until problems with
4017         back end fixed.
4018         (ffecom_push_tempvar): Fix assertion to not crash okay code.
4020         * com.h: Remove old, commented-out code.
4021         Add prototype for warning() in back end.
4023         * ste.c (ffeste_io_dofio_, ffeste_io_dolio_, ffeste_io_douio_,
4024         ffeste_io_icilist_): Check correct type of variable for arrayness.
4026 Sun Jan 29 14:41:42 1995  Dave Love  <d.love@dl.ac.uk>
4028         * BUGS: Remove references to my configure bugs; add another.
4030         * runtime/Makefile.in (AR_FLAGS): Provide default value.
4032         * runtime/f2c.h.in (integer, logical): Take typedefs from
4033         F2C_INTEGER configuration parameter again.
4034         (NON_UNIX_STDIO): don't define it.
4036         * runtime/configure.in: Bring type checks for f2c.h in line with
4037         com.h.
4038         (MISSING_FILE_ELEMS): New variable to determine whether the relevant
4039         elements of the FILE struct exist, independent of NON_UNIX_STDIO.
4040         * runtime/libI77/{err,wrtfmt,wsfe}.c (MISSING_FILE_ELEMS): Use new
4041         parameter.
4043         * config-lang.in: Comment out more of f2c rules (c.f. Make-lang.in).
4044         (This stuff is relevant iff you gave configure --enable-f2c.)
4045         Create f/runtime directory tree iff not building in source
4046         directory.
4048         * Makefile.in (srcdir): Append slash so we get the right value when
4049         not building in the source directory.  This is a consequence of not
4050         building the `f' sources in `f'.
4051         (VPATH): Override configure's value for reasons above.
4052         (f/proj.h f/conf-proj): New rules to build proj.h by
4053         autoconfiguration.
4055         * proj.h: Rename to proj.h.in for autoconfiguration.
4056         * proj.h.in: New as above.
4057         * conf-proj conf-proj.in: New files for autoconfiguration.
4059         * Make-lang.in (include/f2c.h f/runtime/Makefile:): Change the order
4060         of setting the sh variables so that the right GCC_FOR_TARGET is
4061         used.
4062         (f77.*clean:) Add products of new configuration files and make sure
4063         all the *clean targets do something (unlike the ones in
4064         cp/Make-lange.in).
4066         * com.h (FFECOM_f2cINTEGER, FFECOM_f2cLOGICAL): Define as long or
4067         int appropriately to ensure sizeof(real) == sizeof(integer).
4069         * PROJECTS: Library section.
4071         * runtime/libI77/endfile.c: Don't #include sys/types.h conditional
4072         on NON_UNIX_STDIO since rawio.h needs size_t.
4073         * runtime/libI77/uio.c: #include <sys/types.h> for size_t if not
4074         KR_headers.
4076 Wed Jan 25 03:31:51 1995  Craig Burley  (burley@gnu.ai.mit.edu)
4078         * Version 0.5.3 released.
4080         * INSTALL: Revise.
4082         * Make-lang.in: Comment out rules for building f2c itself (f/f2c/).
4084         * README: Revise.
4086         * com.c (ffecom_init_0): Warn if ftnlen or INTEGER not big enough
4087         to hold a char *.
4089         * gbe/2.6.2.diff: Update.
4091 Mon Jan 23 17:10:49 1995  Craig Burley  (burley@gnu.ai.mit.edu)
4093         * TODO: Remove.
4094         BUGS: New file.
4095         PROJECTS: New file.
4096         CREDITS: New file.
4098         * cktyps*: Remove.
4099         Make-lang.in: Remove cktyps stuff.
4100         Makefile.in: Remove cktyps stuff.
4102         * DOC: Add info on changes for 0.5.3.
4104         * bad.c: Put "warning:" &c on diagnostic messages.
4105         Don't output informational messages if warnings disabled.
4107 Thu Jan 19 12:38:13 1995  Craig Burley  (burley@gnu.ai.mit.edu)
4109         * g77.c: Avoid putting out useless "-xnone -xf77" pairs so
4110         larger command lines can be accommodated.
4111         Recognize both `-xlang' and `-x lang'.
4112         Recognize `-xnone' and `-x none' to mean what it does, instead
4113         of treating "none" as any other language.
4114         Some minor, slight improvements in the way args are handled
4115         (hopefully for clearer, more maintainable code), including
4116         consistency checks on arg count just in case.
4118 Wed Jan 18 16:41:57 1995  Craig Burley  (burley@gnu.ai.mit.edu)
4120         * DOC: Explain -fautomatic better.
4122         * INSTALL: Describe libf2c.a better.
4124         * Make-lang.in, Makefile.in: Build f771 &c with gcc/ as cd instead
4125         of gcc/f/ so debugging info is better (source file tracking).
4126         Add new source file type.c.
4128         * Makefile.in: For nextstep3, link f771 with -segaddr __DATA
4129         6000000.  Fix typo.  Change deps-kinda target to handle building
4130         from gcc/.  Update dependencies.
4132         * bld-op.def, bld.h, bld.c: Remove opBACKEND and all related
4133         stuff.
4134         Remove consistency tests that cause compiler warnings.
4136         * cktyps.c: Remove all typing checking.
4138         * com-rt.def: Change all rttypeFLOAT_ intrinsics to rttypeDOUBLE_,
4139         to precisely match how they're declared in libf2c.
4141         * com.h, com.c: Revise to more elegantly track related stuff
4142         in the version of f2c.h used to build libf2c.
4144         * com.c: Increase FFECOM_sizeMAXSTACKITEM, and if 0 or undefined
4145         when checked to determine where to put entity, treat as infinite.
4146         Rewrite temporary mechanism to be based on trees instead of
4147         ffeinfo stuff, and make it much simpler.  Change interface
4148         accordingly.
4149         Fixes to better track types of things, make appropriate
4150         conversions, etc.  E.g. when making an arg for a libf2c
4151         function, make sure it's of the right type (such as ftnlen).
4152         Delete opBACKEND transformation code.
4153         (ffecom_init_0): Smoother initialization of types, especially
4154         paying attention to using consistent rules for making INTEGER,
4155         REAL, DOUBLE PRECISION, etc., and for deciding their "*N"
4156         and kind values that will work across all g77 platforms.
4157         No longer require per-target configuration info in target.h
4158         or config/*/*; use new type module to store size, alignment.
4159         (ffecom_member_phase2): Declare COMMON/EQUIVALENCE group members
4160         so debugger sees them.
4161         (ffecom_finish_progunit): Transform all symbols in program unit,
4162         so -g will show they all exist.
4164         * expr.c (ffeexpr_collapse_substr): Handle strange substring
4165         range values.
4167         * info.h, info.c: Provide connection to new type module.
4168         Remove tests that yield compiler warnings.
4170         * intrin.c (ffeintrin_is_intrinsic): Properly handle deleted
4171         intrinsic.
4173         * lex.c (ffelex_file_fixed): Remove redundant/buggy code.
4175         * stc.c (ffestc_kindtype_kind_, ffestc_kindtype_star_): Replace
4176         boring switch stmt with simple call to new type module.  This
4177         sort of thing is a reason to get up in the morning.
4179         * ste.c: Update to handle new interface for
4180         ffecom_push/pop_tempvar.
4181         Fixes to better track types of things.
4182         Fixes to not crash for certain diagnosed constructs.
4183         (ffeste_begin_iterdo_): Check only constants for overflow to avoid
4184         spurious diagnostics.
4185         Don't convert larger integer (say, INTEGER*8) to canonical integer
4186         for iteration count.
4188         * stw.h: Track DO iteration count temporary variable.
4190         * symbol.c: Remove consistency tests that cause compiler warnings.
4192         * target.c (ffetarget_aggregate_info): Replace big switch with
4193         little call to new type module.
4194         (ffetarget_layout): Remove consistency tests that cause
4195         compiler warnings.
4196         (ffetarget_convert_character1_typeless): Pick up length of
4197         typeless type from new type module.
4199         * target.h: Crash build if target float bit pattern cannot be
4200         precisely determined.
4201         Remove all the type cruft now determined by ffecom_init_0
4202         at invocation time and maintained in new type module.
4203         Put casts on second arg of all REAL_VALUE_TO_TARGET_DOUBLE
4204         uses so compiler warnings avoided (requires target float bit
4205         pattern to be precisely determined, hence code to crash build).
4207         * top.c: Add inits/terminates for new type module.
4209         * type.h, type.c: New module.
4211         * gbe/2.6.2.diff: Remove all patches to files in gcc/config/
4212         directory and its subdirectories.
4214 Mon Jan  9 19:23:25 1995  Dave Love  <d.love@dl.ac.uk>
4216         * com.h (FFECOM_F2C_INTEGER_TYPE_NODE): Define and use instead of
4217         long_integer_type_node where appropriate.
4219 Tue Jan  3 14:56:18 1995  Dave Love  <d.love@dl.ac.uk>
4221         * com.h: Make ffecom_f2c_logical_type_node long, consistent with
4222         integer.
4224 Fri Dec  2 20:07:37 1994  Dave Love  <d.love@dl.ac.uk>
4226         * config-lang.in (stagestuff): Add f2c conditionally.
4227         * Make-lang.in: Add f2c and related targets.
4228         * f2c: Add the directory.
4230 Fri Nov 25 22:17:26 1994  Dave Love  <d.love@dl.ac.uk>
4232         * Makefile.in (FLAGS_TO_PASS): pass $(CROSS)
4233         * Make-lang.in: more changes to runtime targets
4235 Thu Nov 24 18:03:21 1994  Dave Love  <d.love@dl.ac.uk>
4237         * Makefile.in (FLAGS_TO_PASS): define for sub-makes
4239         * g77.c (main): change f77-cpp-output to f77-cpp-input (.F files)
4241 Wed Nov 23 15:22:53 1994  Dave Love  <d.love@dl.ac.uk>
4243         * bad.c (ffebad_finish): kluge to fool emacs19 into finding errors:
4244         add trailing space to <file>:<line>:
4246 Tue Nov 22 11:30:50 1994  Dave Love  <d.love@dl.ac.uk>
4248         * runtime/libF77/signal_.c (RETSIGTYPE): added
4250 Mon Nov 21 13:04:13 1994  Dave Love  <d.love@dl.ac.uk>
4252         * Makefile.in (compiler): add runtime
4254         * config-lang.in (stagestuff): add libf2c.a to stagestuff
4256         * Make-lang.in:
4257         G77STAGESTUFF <- MORESTAGESTUFF
4258         f77-runtime: new target, plus supporting ones
4260         * runtime: add the directory, containing libI77, libF77 and autoconf
4261         stuff
4263         * g++.1: remove
4265         * g77.1: minor fixes
4267 Thu Nov 17 15:18:05 1994  Craig Burley  (burley@gnu.ai.mit.edu)
4269         * Version 0.5.2 released.
4271         * bad.def: Modify wording of FFEBAD_UNIMPL_STMT to indicate
4272         that it covers a wide array of possible problems (that, someday,
4273         should be handled via separate diagnostics).
4275         * lex.c: Allow $ in identifiers if -fdollar-ok.
4276         * top.c: Support -fdollar-ok.
4277         * top.h: Support -fdollar-ok.
4278         * target.h: Support -fdollar-ok.
4279         * DOC: Describe -fdollar-ok.
4281         * std.c (ffestd_R1229_finish): Fix bug so stand-alone build works.
4282         * ste.c (ffeste_R819A): Fix bug so stand-alone build works.
4284         * Make: Improvements for stand-alone build.
4286         * Makefile.in: Fix copyright text at top of file.
4288         * LINK, SRCS, UNLINK: Removed.  Not particularly useful now that
4289         g77 sources live in their own subdirectory.
4291         * g77.c (main): Cast arg to bzero to avoid warning.  (This is
4292         identical to Kenner's fix to cp/g++.c.)
4294         * gbe/: New subdirectory, to contain .diff files for various
4295         versions of the GNU CC back end.
4297         * gbe/README: New file.
4298         * gbe/2.6.2.diff: New file.
4300 Tue Nov  8 10:23:10 1994  Dave Love  <d.love@dl.ac.uk>
4302         * Make-lang.in: don't install as f77 as well as g77 to avoid
4303         confusion with system's compiler (especially while testing)
4305         * g77.c (main): use -lf2c and -lm; fix sense of test for .f/.F files
4307 Fri Oct 28 09:45:00 1994  Craig Burley  (burley@gnu.ai.mit.edu)
4309         * Version 0.5.1 released.
4311         * gcc.c: Invoke f771 instead of f-771.
4313 Fri Oct 28 02:00:44 1994  Craig Burley  (burley@gnu.ai.mit.edu)
4315         * Version 0.5.0 released.
4317 Fri Oct 14 15:03:35 1994  Craig Burley  (burley@gnu.ai.mit.edu)
4319         * Makefile.in: Handle the Fortran-77 front-end in a subdirectory.
4320         * f-*: Move Fortran-77 front-end to f/*.