Mon Jun 15 23:39:24 1998 Craig Burley <burley@gnu.org>
[official-gcc.git] / gcc / f / ChangeLog
blob581f689c6f8f224f93db6aea815f43ab2d9a482a
1 Mon Jun 15 23:39:24 1998  Craig Burley  <burley@gnu.org>
3         * Make-lang.in (f/g77.info): Use -f when removing
4         pre-existing Info files, if any.  (This rm command
5         can go away once makeinfo has been changed to delete
6         .info-N files beyond the last one it creates.)
8         * Make-lang.in ($(srcdir)/f/intdoc.texi): Compile
9         using $(INCLUDES) macro to get the new hconfig.h
10         and system.h headers.  [Instead of change below.]
12 1998-16-19  Manfred Hollstein  <manfred@s-direktnet.de>
14         * Makefile.in ($(srcdir)/f/intdoc.texi): Add $(INCLUDES).
16 Mon Jun 15 22:21:57 1998  Craig Burley  <burley@gnu.org>
18         Cutover to system.h:
19         * Make-lang.in:
20         * Makefile.in:
21         * ansify.c:
22         * bad.c:
23         * bld.c:
24         * com.c:
25         * com.h:
26         * expr.c:
27         * fini.c:
28         * g77spec.c:
29         * implic.c:
30         * intdoc.c:
31         * intrin.c:
32         * lex.c:
33         * lex.h:
34         * parse.c:
35         * proj.c:
36         * proj.h:
37         * src.c:
38         * src.h:
39         * stb.c:
40         * ste.c:
41         * target.c:
42         * top.c:
43         * system.j: New file.
45         Use toplev.h where appropriate:
46         * Make-lang.in:
47         * Makefile.in:
48         * bad.c:
49         * bld.c:
50         * com.c:
51         * lex.c:
52         * ste.c:
53         * top.c:
54         * toplev.j: New file.
55         
56         Conditionalize all dumping/reporting routines so they don't
57         get built for gcc/egcs:
58         * bld.c:
59         * bld.h:
60         * com.c:
61         * equiv.c:
62         * equiv.h:
63         * sta.c:
64         * stt.c:
65         * stt.h:
66         * symbol.c:
67         * symbol.h:
69         Use hconfig.h instead of config.h where appropriate:
70         * Makefile.in (proj-h.o): Compile with -DUSE_HCONFIG.
71         * fini.c: Define USE_HCONFIG before including proj.h.
73         * Makefile.in (deps-kinda): Redirect stderr to stdout,
74         to eliminate diagnostics vis-a-vis g77spec.c.
76         * Makefile.in: Regenerate dependencies via deps-kinda.
78         * lex.c (ffelex_file_fixed, ffelex_file_free): Eliminate
79         apparently spurious warnings about uninitialized variables
80         `c', `column', and so on.
82 Sat Jun 13 03:13:18 1998  Craig Burley  <burley@gnu.org>
84         * g77spec.c (lang_specific_driver): Print out egcs
85         version info first, to be compatible with what some
86         test facilities expect.
88 Wed Jun 10 13:17:32 1998  Dave Brolley  <brolley@cygnus.com>
90         * top.h (ffe_decode_option): New argc/argv interface.
91         * top.c (ffe_decode_option): New argc/argv interface.
92         * parse.c (yyparse): New argc/argv interface for ffe_decode_option.
93         * com.c (lang_decode_option): New argc/argv interface.
95 Mon Jun  1 19:37:42 1998  Craig Burley  <burley@gnu.org>
97         * com.c (ffecom_init_0): Fix setup of INTEGER(KIND=7)
98         pointer type.
99         * info.c (ffeinfo_type): Don't crash on null type.
100         * expr.c (ffeexpr_fulfill_call_): Don't special-case
101         %LOC(expr) or LOC(expr).
102         Delete FFEGLOBAL_argsummaryPTR.
103         * global.c, global.h: Delete FFEGLOBAL_argsummaryPTR.
105 Thu May 28 21:32:18 1998  Craig Burley  <burley@gnu.org>
107         Restore circa-0.5.22 capabilities of `g77' driver:
108         * Make-lang.in (g77spec.o): Depend on f/version.h.
109         (g77version.o): New rule to compile g77 version info.
110         (g77$(exeext)): Depend on and link in g77version.o.
111         * g77spec.c: Rewrite to be more like 0.5.22 version
112         of g77.c, making filtering of command line smarter
113         so mixed Fortran and C (etc.) can be compiled, verbose
114         version info can be obtained, etc.
115         * lang-specs.h (f77-version): New "language" to support
116         "g77 -v" command under new gcc 2.8 regime.
117         * lex.c (ffelex_file_fixed): If -fnull-version, just
118         substitute a "source file" that prints out version info.
119         * top.c, top.h: Support -fnull-version.
121         * lang-specs.h: Use "%O" instead of OO macro to specify
122         object extension.  Remove old stringizing cruft.
124         * Make-lang.in (g77.c, g77spec.o, g77.o, g77$(exeext),
125         g77-cross$(exeext), f771,
126         $(srcdir)/f/g77.info, $(srcdir)/f/g77.dvi,
127         $(srcdir)/f/intdoc.texi,
128         f77.install-common, f77.install-info, f77.install-man,
129         f77.uninstall, $(G77STAGESTUFF), f77.stage1, f77.stage2,
130         f77.stage3, f77.stage4, f77.distdir): Don't do anything
131         unless user specified "f77" or "F77" in $LANGUAGES either
132         during configuration or explicitly.  For convenience of
133         various tests and to work around lack of the assignment
134         "LANGUAGES=$(BOOT_LANGUAGES)" in the "make stage1" command
135         of "make bootstrap" in gcc, use a touch file named "lang-f77"
136         to communicate whether this is the case.
138         * Make-lang.in (F77_FLAGS_TO_PASS): Delete this macro,
139         replace with minimal expansion of its former self in
140         each of the two instances where it was used.
142         * Makefile.in (HOST_CC): Delete this definition.
144         * com.c (index, rindex): Delete these declarations.
146         * proj.h: (isascii): Delete this.
148         * Make-lang.in (f77.install-common): Warn if `f77-install-ok'
149         flag-file exists, since it no longer triggers any activity.
151         Rename libf2c.a and f2c.h to libg2c.a and g2c.h,
152         normalize and simplify g77/libg2c build process:
153         * Make-lang.in: Remove all support for overwriting
154         /usr/bin/f77 etc., or whatever the actual names are
155         via $(prefix) and $(local_prefix).  (g++ overwrites
156         /usr/bin/c++, but then it's often the only C++ compiler
157         on the system; f77 often exists on systems that are
158         installing g77.)
159         (f77.realclean): Remove obsolete target.
160         (g77.c, g77$(exeext)): Minor changes to look more like g++'s
161         stuff.
162         (f771): Now built with srcdir=gcc/f, not srcdir=gcc, to be
163         more like g++ and such.
164         (f/Makefile): Removed, as g++ doesn't need this rule.
165         (f77.install-common): No longer install f77, etc.
166         (f77.install-man): No longer install f77.1.
167         (f77.uninstall): No longer uninstall f77, f77.1, etc.
168         (f77.stage1, f77.stage2, f77.stage3, f77.stage4): Do work
169         only if "f77" appears in $(LANGUAGES).
170         (Note: gcc's Makefile.in's bootstrap target should set
171         LANGUAGES=$(BOOT_LANGUAGES) when making the stage1 target.)
172         * Makefile.in: Update vis-a-vis gcc/cp/Makefile.in.
173         (none): Remove.
174         (g77-only): Relocate.
175         (all.indirect, f771, *.o): Now assumes current directory
176         is this dir (gcc/f), not the parent directory.
177         (TAGS): Remove "echo 'parse.y,0'  >> TAGS ;" line.
178         * config-lang.in: Delete commented-out code.
179         Fix stagestuff definition.  Add more stuff to
180         diff_excludes definition.  Don't create any directories.
181         Set outputs to f/Makefile, to get variable substition
182         to happen (what does that really do, anyway?!).
183         * g77spec.c: Rename libf2c to libg2c.
185         * com.h: Remove all of the gcc back-end decls,
186         since egcs should have all of them correct.
188         * com.c: Include "proj.h" before anything else,
189         as that's how things are supposed to work.
190         * ste.c: Ditto.
192         * bad.c: Include "flags.j" here, since some diagnostics
193         check flag_pedantic_errors.
195         * Makefile.in (f/*.o): Rebuild dependencies via
196         deps-kinda.
198         * output.j: New source file.
199         * Make-lang.in (F77_SRCS): Update accordingly.
200         * Makefile.in (OUTPUT_H): Ditto.
201         (deps-kinda): Ditto.
202         * com.c: Include "output.j" here.
203         * lex.c: Ditto.
205 Mon May 25 03:34:42 1998  Craig Burley  <burley@gnu.org>
207         * com.c (ffecom_expr_): Fix D**I and Z**I cases to
208         not convert (DOUBLE PRECISION) D and (DOUBLE COMPLEX) Z
209         to INTEGER.  (This is dead code here anyway.)
211 Sat May 23 06:32:52 1998  Craig Burley  <burley@gnu.org>
213         * com.c (ffecom_finish_symbol_transform_): Don't transform
214         statement (nested) functions, to avoid gcc compiling them
215         and thus producing linker errors if they refer to undefined
216         external functions.  But warn if they're unused and -Wunused.
217         * bad.def (FFEBAD_SFUNC_UNUSED): New diagnostic.
219 Tue May 19 14:52:41 1998  Craig Burley  <burley@gnu.org>
221         * bad.def (FFEBAD_OPEN_UNSUPPORTED, FFEBAD_INQUIRE_UNSUPPORTED,
222         FFEBAD_READ_UNSUPPORTED, FFEBAD_WRITE_UNSUPPORTED,
223         FFEBAD_QUAD_UNSUPPORTED, FFEBAD_BLOCKDATA_STMT,
224         FFEBAD_TRUNCATING_CHARACTER, FFEBAD_TRUNCATING_HOLLERITH,
225         FFEBAD_TRUNCATING_NUMERIC, FFEBAD_TRUNCATING_TYPELESS,
226         FFEBAD_TYPELESS_OVERFLOW): Change these from warnings
227         to errors.
229 Tue May 19 14:51:59 1998  Craig Burley  <burley@gnu.org>
231         * Make-lang.in (f77.install-info, f77.uninstall):
232         Use install-info as appropriate.
234 Tue May 19 12:56:54 1998  Craig Burley  <burley@gnu.org>
236         * com.c (ffecom_init_0): Rename xargc to f__xargc,
237         in accord with same-dated change to f/runtime.
239 Fri May 15 10:52:49 1998  Craig Burley  <burley@gnu.org>
241         * com.c (ffecom_convert_narrow_, ffecom_convert_widen_):
242         Be even more persnickety in checking for internal bugs.
243         Also, if precision isn't changing, just return the expr.
245         * expr.c (ffeexpr_token_number_): Call
246         ffeexpr_make_float_const_ to make an integer.
247         (ffeexpr_make_float_const_): Handle making an integer.
249         * intrin.c (ffeintrin_init_0): Distinguish between
250         crashes on bad arg base and kind types.
252 Thu May 14 13:30:59 1998  Craig Burley  <burley@gnu.org>
254         * Make-lang.in (f/expr.c): Now depends on f/stamp-str.
255         * expr.c: Use ffestrOther in place of ffeexprDotdot_.
256         * str-ot.fin: Add more keywords for expr.c.
258         * intdoc.c (dumpimp): Trivial fix.
260         * com.c (ffecom_expr_): Add ltkt variable for clarity.
262 Wed May 13 13:05:34 1998  Craig Burley  <burley@gnu.org>
264         * Make-lang.in (G77STAGESTUFF): Add g77.o, g77spec.o,
265         and g77version.o.
266         (f77.clean): Add removal of g77.c, g77.o, g77spec.o,
267         and g77version.o.
268         (f77.distclean): Delete removal of g77.c.
270 Tue Apr 28 09:23:10 1998  Craig Burley  <burley@gnu.org>
272         Fix 980427-0.f:
273         * global.c (ffeglobal_ref_progunit_): When transitioning
274         from EXT to FUNC, discard hook, since the decl, if any, is
275         probably wrong.
277 Sun Apr 26 09:05:50 1998  Craig Burley  <burley@gnu.org>
279         * com.c (ffecom_char_enhance_arg_): Wrap the upper bound
280         (the PARM_DECL specifying the length of the CHARACTER*(*)
281         dummy arg) in a variable_size invocation, to prevent
282         dwarf2out.c crashing when compiling code with -g.
284 Sat Apr 18 05:03:21 1998  Craig Burley  <burley@gnu.org>
286         * com.c (ffecom_check_size_overflow_): Ignore overflow
287         as well if dummy argument.
289 Fri Apr 17 17:18:04 1998  Craig Burley  <burley@gnu.org>
291         * version.h: Get rid of the overly large headers
292         here too, as done in version.c.
294 Tue Apr 14 14:40:40 1998  Craig Burley  <burley@gnu.org>
296         * com.c (ffecom_start_progunit_): Mark function decl
297         as used, to avoid spurious warning (-Wunused) for ENTRY.
299 Tue Apr 14 14:19:34 1998  Craig Burley  <burley@gnu.org>
301         * sta.c (ffesta_second_): Check for CASE DEFAULT
302         as well as CASE, or it won't be recognized.
304 Mon Mar 23 21:20:35 1998  Craig Burley  <burley@gnu.org>
306         * version.c: Reduce to a one-line file, like
307         gcc's version.c, since there's really no content
308         there.
310 Mon Mar 23 11:58:43 1998  Craig Burley  <burley@gnu.org>
312         * bugs.texi: Various updates.
314         * com.c (ffecom_tree_canonize_ptr_): Fix up spacing a bit.
316 Mon Mar 16 21:20:35 1998  Craig Burley  <burley@gnu.org>
318         * expr.c (ffeexpr_sym_impdoitem_): Don't blindly
319         reset symbol info after calling ffesymbol_error,
320         to avoid crash.
322 Thu Mar 12 13:50:21 1998  Craig Burley  <burley@gnu.org>
324         * lang-options.h: Sort all -f*-intrinsics-* options,
325         for consistency with other g77 versions.
327 Mon Mar 16 15:38:50 1998  Craig Burley  <burley@gnu.org>
329         * Version 0.5.22 released.
331 Mon Mar 16 14:36:02 1998  Craig Burley  <burley@gnu.org>
333         Make -g work better for ENTRY:
334         * com.c (ffecom_start_progunit_): Master function
335         for ENTRY-laden procedure is not really invented,
336         so it can be debugged.
337         (ffecom_do_entry_): Push/set/pop lineno for each
338         entry point.
340 Sun Mar 15 05:48:49 1998  Craig Burley  <burley@gnu.org>
342         * intrin.def: Fix spelling of mixed-case form
343         of `CPU_Time' (was `Cpu_Time').
345 1998-03-09  Dave Love  <d.love@dl.ac.uk>
347         * Make-lang.in: Set CONFIG_SITE to a non-existent file since
348         /dev/null loses with bash 2.0/autoconf 2.12.  Put
349         F77_FLAGS_TO_PASS before CC.
351 Sun Mar  8 16:35:34 1998  Craig Burley  <burley@gnu.org>
353         * intrin.def: Use tabs instead of blanks more
354         consistently (excepting DEFGEN section for now).
356 Sat Feb 28 15:24:38 1998  Craig Burley  <burley@gnu.org>
358         * intrin.def: Make CPU_TIME's arg generic real to be just
359         like SECOND_subr.
361 Fri Feb 20 12:45:53 1998  Craig Burley  <burley@gnu.org>
363         * expr.c (ffeexpr_token_arguments_): Make sure
364         outer exprstack isn't null.
366 1998-02-16  Dave Love  <d.love@dl.ac.uk>
368         * Makefile.in (f/fini): Don't use -W -Wall with HOST_CC.
370 Sun Jan 11 02:14:47 1998  Craig Burley  <burley@gnu.org>
372         Support FORMAT(I<1+2>) (constant variable-FORMAT
373         expressions):
374         * bad.def (FFEBAD_FORMAT_VARIABLE): New diagnostic.
375         * std.c (ffestd_R1001rtexpr_): New function.
376         (ffestd_R1001dump_, ffestd_R1001dump_1005_1_,
377         ffestd_R1001dump_1005_2_, ffestd_R1001dump_1005_3_,
378         ffestd_R1001dump_1005_4_, ffestd_R1001dump_1005_5_,
379         ffestd_R1001dump_1010_2_, ffestd_R1001dump_1010_3_,
380         ffestd_R1001dump_1010_4_, ffestd_R1001dump_1010_5_):
381         Use new function instead of ffestd_R1001error_.
383         * stb.c (ffestb_R10014_, ffestb_R10016_, ffestb_R10018_,
384         ffestb_R100110_): Restructure `for' loop for style.
386         Fix 970626-2.f by not doing most back-end processing
387         when current_function_decl is an ERROR_MARK, and by
388         making that the case when its type would be an ERROR_MARK:
389         * com.c (ffecom_start_progunit_, finish_function,
390         lang_printable_name, start_function,
391         ffecom_finish_symbol_transform_): Test for ERROR_MARK.
392         * std.c (ffestd_stmt_pass_): Don't do any downstream
393         processing if ERROR_MARK.
395         * Make-lang.in (f77.install-common): Don't install, and
396         don't uninstall existing, Info files if f/g77.info
397         doesn't exit.  (This is a somewhat modified version
398         of an egcs patch on 1998-01-07 12:05:51 by Bruno Haible
399         <bruno@linuix.mathematik.uni-karlsruhe.de>.)
401 Fri Jan  9 19:09:07 1998  Craig Burley  <burley@gnu.org>
403         Fix -fpedantic combined with `F()' invocation,
404         also -fugly-comma combined with `IARGC()' invocation:
405         * bad.def (FFEBAD_NULL_ARGUMENT_W): New diagnostic.
406         * expr.c (ffeexpr_finished_): Don't reject null expressions
407         in the argument-expression context -- let outer context
408         handle that.
409         (ffeexpr_token_arguments_): Warn about null expressions
410         here if -fpedantic (as appropriate).
411         Obey -fugly-comma for only external-procedure invocations.
412         * intrin.c (ffeintrin_check_): No longer ignore explicit
413         omitted trailing args.
415 Tue Dec 23 14:58:04 1997  Craig Burley  <burley@gnu.org>
417         * intrin.c (ffeintrin_fulfill_generic): Don't generate
418         FFEBAD_INTRINSIC_TYPE for CHARACTER*(*) intrinsic.
420         * com.c (ffecom_gfrt_basictype):
421         (ffecom_gfrt_kindtype):
422         (ffecom_make_gfrt_):
423         (FFECOM_rttypeVOIDSTAR_): New return type `void *', for
424         the SIGNAL intrinsic.
425         * com-rt.def (FFECOM_rttypeSIGNAL): Now returns `void *'.
426         * intdoc.c: Replace `p' kind specifier with `7'.
427         * intrin.c (ffeintrin_check_, ffeintrin_init_0): Replace
428         `p' kind specifier with `7'.
429         * intrin.def (FFEINTRIN_impLOC, FFEINTRIN_impSIGNAL_func,
430         FFEINTRIN_impSIGNAL_subr): Replace `p' specifier with `7'.
431         Also, SIGNAL now returns a `void *' status, not `int'.
433         Improve run-time diagnostic for "PRINT '(I1', 42":
434         * com.c (ffecom_char_args_x_): Renamed from ffecom_char_args_,
435         which is now a macro (to avoid lots of changes to other code)
436         with new arg, ffecom_char_args_with_null_ being another new
437         macro to call same function with different value for new arg.
438         This function now appends a null byte to opCONTER expression
439         if the new arg is TRUE.
440         (ffecom_arg_ptr_to_expr): Support NULL length pointer.
441         * ste.c (ffeste_io_cilist_):
442         (ffeste_io_icilist_): Pass NULL length ptr for
443         FORMAT expression, so null byte gets appended where
444         feasible.
445         * target.c (ffetarget_character1):
446         (ffetarget_concatenate_character1):
447         (ffetarget_substr_character1):
448         (ffetarget_convert_character1_character1):
449         (ffetarget_convert_character1_hollerith):
450         (ffetarget_convert_character1_integer4):
451         (ffetarget_convert_character1_logical4):
452         (ffetarget_convert_character1_typeless):
453         (ffetarget_hollerith): Append extra phantom null byte as
454         part of FFETARGET-NULL-BYTE kludge.
456         * intrin.def (FFEINTRIN_impCPU_TIME): Point to
457         FFECOM_gfrtSECOND as primary run-time routine.
459 Mon Dec 22 12:41:07 1997  Craig Burley  <burley@gnu.org>
461         * intrin.c (ffeintrin_init_0): Remove duplicate
462         check for `!'.
464 Sun Dec 14 02:49:58 1997  Craig Burley  <burley@gnu.org>
466         * intrin.c (ffeintrin_init_0): Fix up indentation a bit.
467         Fix bug that prevented checking of arguments other
468         than the first.
470         * intdoc.c: Fix up indentation a bit.
472 Tue Dec  9 16:20:57 1997  Richard Henderson  <rth@cygnus.com>
474         * com.c (ffecom_type_vardesc_): Vardesc.dims is a `ftnlen*'.
476 Mon Dec  1 19:12:36 1997  Craig Burley  <burley@gnu.org>
478         * intrin.c (ffeintrin_check_): Fix up indentation a bit more.
480 Mon Dec  1 16:21:08 1997  Craig Burley  <burley@gnu.org>
482         * com.c (ffecom_arglist_expr_): Crash if non-supplied
483         optional arg isn't passed as an address.
484         Pass null pointer explicitly, instead of via ffecom routine.
485         If incoming argstring is NULL, substitute pointer to "0".
486         Recognize '0' as ending the usual arg stuff, just like '\0'.
488 Sun Nov 30 22:22:22 1997  Craig Burley  <burley@gnu.org>
490         * intdoc.c: Minor fix-ups.
492         * intrin.c (ffeintrin_check_): Fix up indentation a bit.
494         * intrin.def: Fix up spacing a bit.
496 1997-11-17  Dave Love  <d.love@dl.ac.uk>
498         * com.c (ffecom_arglist_expr_): Pass null pointers for optional
499         args which aren't supplied.
501 Sun Nov 16 21:45:43 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
503         * Make-lang.in (f77.install-info): Depend on f77.info.
505 1997-11-06  Dave Love  <d.love@dl.ac.uk>
507         * intrin.def: Allow non-integer args for INT2 and INT8 (per
508         documentation).
510 Tue Oct 28 02:21:25 1997  Craig Burley  <burley@gnu.ai.mit.edu>
512         * lang-options.h: Add -fgnu-intrinsics-* and
513         -fbadu77-intrinsics-* options.
515 Sun Oct 26 02:36:21 1997  Craig Burley  <burley@gnu.ai.mit.edu>
517         * com.c (lang_print_error_function): Fix to more
518         reliably notice when the diagnosed region changes.
520 Sat Oct 25 23:43:36 1997  Craig Burley  <burley@gnu.ai.mit.edu>
522         Fix 950327-0.f:
523         * sta.c, sta.h (ffesta_outpooldisp): New function.
524         * std.c (ffestd_stmt_pass_): Don't kill NULL pool.
525         (ffestd_R842): If pool already preserved, save NULL
526         for pool, because it should be killed only once.
528         * malloc.c [MALLOC_DEBUG]: Put initializer for `name'
529         component in braces, to avoid compiler warning.
531 Fri Oct 10 13:00:48 1997  Craig Burley  <burley@gnu.ai.mit.edu>
533         * ste.c (ffeste_begin_iterdo_): Fix loop setup so iteration
534         variable is modified only after the #iterations is calculated;
535         otherwise if the iteration variable is aliased to any of the
536         operands in the start, end, or increment expressions, the
537         wrong #iterations might be calculated.
539         * com.c (ffecom_save_tree): Fix indentation.
541 1997-10-05  Dave Love  <d.love@dl.ac.uk>
543         * intrin.def: Make SECOND_subr's arg generic real for people
544         porting from Cray and making everything double precision.
546 Mon Sep 29 16:18:21 1997  Craig Burley  <burley@gnu.ai.mit.edu>
548         * stu.c (ffestu_list_exec_transition_,
549         ffestu_dummies_transition_): Specify `bool' type for
550         `in_progress' variables.
552         * com.h (assemble_string): Declare this routine (instead
553         of #include'ing "output.h" from gcc) to eliminate warnings
554         from lex.c.
556 Fri Sep 19 01:12:27 1997  Craig Burley  <burley@gnu.ai.mit.edu>
558         * expr.c (ffeexpr_reduced_eqop2_): 
559         (ffeexpr_reduced_relop2_): Minor fixes to diagnostic code.
561         * fini.c (main): Change return type to `int'.
563 Wed Sep 17 10:47:08 1997  Craig Burley  <burley@gnu.ai.mit.edu>
565         * com-rt.def (FFECOM_gfrtDSIGN, FFECOM_gfrtISIGN,
566         FFECOM_gfrtSIGN): Add second argument.
568         * expr.c (ffeexpr_cb_comma_c_): Trivial fixes.
570 Tue Sep  9 01:59:35 1997  Craig Burley  <burley@gnu.ai.mit.edu>
572         * Version 0.5.21 released.
574 Tue Sep  9 00:31:01 1997  Craig Burley  <burley@gnu.ai.mit.edu>
576         * intdoc.c (dumpem): Put appropriate commentary in
577         output file, so readers know it isn't source.
579 Wed Aug 27 08:08:25 1997  Craig Burley  <burley@gnu.ai.mit.edu>
581         * proj.h: Always #include "config.j" first, to pick up
582         gcc's configuration.
583         * com.c: Change bcopy() and bzero() calls to memcpy()
584         and memset() calls, to make more of g77 ANSI C.
586 1997-08-26  Dave Love  <d.love@dl.ac.uk>
588         * Make-lang.in ($(srcdir)/f/runtime/configure,
589         $(srcdir)/f/runtime/libU77/configure): Fix for when srcdir isn't
590         relative.
592 Tue Aug 26 05:59:21 1997  Craig Burley  <burley@gnu.ai.mit.edu>
594         * ansify.c (main): Make sure readers of stdout know
595         it's derived from stdin; omit comment text; get source
596         line numbers in future stderr output to be correct.
598 Tue Aug 26 01:36:01 1997  Craig Burley  <burley@gnu.ai.mit.edu>
600         Fix 970825-0.f:
601         * stb.c (ffestb_R5284_): Allow OPEN_PAREN after closing
602         SLASH as well as NAME.
604 Mon Aug 25 23:48:17 1997  Craig Burley  <burley@gnu.ai.mit.edu>
606         Changes to allow g77 docs to be built entirely from scratch
607         using any ANSI C compiler, not requiring GNU C:
608         * Make-lang.in ($(srcdir)/f/intdoc.texi): "Pipe" new
609         location of intrinsic documentation data base, f/intdoc.in,
610         through new `ansify' program to append `\n\' to quoted
611         newlines, into f/intdoc.h0.  Do appropriate cleanups.  Explain.
612         (f77.mostlyclean): Add f/ansify and f/intdoc.h0 to cleanups.
613         * f/ansify.c: New program.
614         * f/intdoc.c: Fix so it conforms to ANSI C.
615         #include f/intdoc.h0 instead of f/intdoc.h.
616         Avoid some warnings.
617         * f/intdoc.h, f/intdoc.in: Rename the former to the latter; no
618         changes made to the content in this patch!
619         * f/intrin.h (ffeintrinFamily): Fix to conform to ANSI C.
621 Sun Aug 24 06:52:48 1997  Craig Burley  <burley@gnu.ai.mit.edu>
623         Fix up g77 compiler data base for libf2c routines:
624         * com-rt.def (FFECOM_gfrtSIGNAL): Change return type to
625         FTNINT to match actual code.
627         * com.c (ffecomRttype_): Replace FFECOM_rttypeINT_ with
628         FFECOM_rttypeFTNINT_.
629         Add and fix up comments.
630         (ffecom_make_gfrt_, ffecom_gfrt_basictype,
631         ffecom_gfrt_kindtype): Replace FFECOM_rttypeINT_ with
632         FFECOM_rttypeFTNINT_; add FFECOM_rttypeDOUBLEREAL_.
634 Wed Aug 20 17:18:40 1997  Craig Burley  <burley@gnu.ai.mit.edu>
636         * global.c (ffeglobal_ref_progunit_): It's okay to have
637         a different CHARACTER*n length for a reference if the
638         existing length is for another reference, not a definition.
640 Mon Aug 18 14:27:18 1997  Craig Burley  <burley@gnu.ai.mit.edu>
642         Fix 970814-0.f:
643         * global.c (ffeglobal_new_progunit_): Distinguish
644         between previously defined, versus inferred, filewide
645         when it comes to diagnostics.
647         Fix 970816-1.f:
648         * global.c (ffeglobal_ref_progunit_): Change BDATA into EXT
649         right at the beginning, so EXTERNAL FOO followed later
650         by SUBROUTINE FOO is not diagnosed.
652         Fix 970813-0.f:
653         * com-rt.def (FFECOM_gfrtALARM): Returns `integer', not
654         `void'.
656 Sun Aug 17 03:32:44 1997  Craig Burley  <burley@gnu.ai.mit.edu>
658         Fix up problems when virtual memory exhausted:
659         * malloc.c (malloc_new_): Use gcc's xmalloc(), so we
660         print a nicer message when malloc returns no memory.
661         (malloc_resize_): Ditto for xrealloc().
663         * Make-lang.in, Makefile.in: Comment out lines containing
664         just formfeeds.
666 Sat Aug 16 19:41:33 1997  Craig Burley  <burley@gnu.ai.mit.edu>
668         * com.c (ffecom_make_gfrt_): For rttypeREAL_F2C_, return
669         double_type_node; for rttypeREAL_GNU_, return
670         _real_type_node.
672 1997-08-13  Dave Love  <d.love@dl.ac.uk>
674         * config-lang.in (diff_excludes): Add some hints about known
675         problematic platforms.
677 1997-08-13  Dave Love  <d.love@dl.ac.uk>
679         * intdoc.h: Document `alarm'.
681 Mon Aug 11 21:19:22 1997  Craig Burley  <burley@gnu.ai.mit.edu>
683         * Make-lang.in ($(RUNTIMESTAGESTUFF)): Add
684         f/runtime/stamp-lib.
686 Mon Aug 11 01:52:03 1997  Craig Burley  <burley@gnu.ai.mit.edu>
688         * com.c (ffecom_build_complex_constant_): Go with the
689         new build_complex() approach used in gcc-2.8.
691         * com.c (ffecom_sym_transform_): Don't set
692         DECL_IN_SYSTEM_HEADER for a tree node that isn't
693         a VAR_DECL, which happens when var is in common!
695         * com.c (ffecom_expr_intrinsic_) (case FFEINTRIN_impALARM):
696         No need to test codegen_imp -- there's only one valid here.
698         * intrin.def (FFEINTRIN_impALARM): Specify `Status' argument
699         as write-only.
701 Fri Aug  8 05:40:23 1997  Craig Burley  <burley@gnu.ai.mit.edu>
703         Substantial changes to accommodate distinctions among
704         run-time routines that support intrinsics, and between
705         routines that compute and return the same type vs. those
706         that compute one type and return another (or `void'):
707         * com-rt.def: Specify new return type REAL_F2C_ instead
708         of many DOUBLE_, COMPLEX_F2C_ instead of COMPLEX_, and
709         so on.
710         Clear up the *BES* routines "once and for all".
711         * com.c: New return types.
712         (ffecom_convert_narrow_, ffecom_convert_widen_):
713         New functions that are "safe" variants of convert(),
714         to catch errors that ffecom_expr_intrinsic_() now
715         no longer catches.
716         (ffecom_arglist_expr_): Ensure arguments are not
717         converted to narrower types.
718         (ffecom_call_): Ensure return value is not converted
719         to a wider type.
720         (ffecom_char_args_): Use new ffeintrin_gfrt_direct()
721         routine.
722         (ffecom_expr_intrinsic_): Simplify how run-time
723         routine is selected (via `gfrt' only now; lose the
724         redundant `ix' variable).
725         Eliminate the `library' label; any code that doesn't
726         return directly just `break's out now with `gfrt'
727         set appropriately.
728         Set `gfrt' to default choice initially, either a
729         fast direct form or, if not available, a slower
730         indirect-callable form.
731         (ffecom_make_gfrt_): No longer need to do special
732         check for complex; it's built into the new return-type
733         regime.
734         (ffecom_ptr_to_expr): Use new ffeintrin_gfrt_indirect()
735         routine.
736         * intrin.c, intrin.h: `gfrt' field replaced with three fields,
737         so it is easier to provide faster direct-callable and
738         GNU-convention indirect-callable routines in the future.
739         DEFIMP macro adjusted accordingly, along with all its uses.
740         (ffeintrin_gfrt_direct): New function.
741         (ffeintrin_gfrt_indirect): Ditto.
742         (ffeintrin_is_actualarg): If `-fno-f2c' is in effect,
743         require a GNU-callable version of intrinsic instead of
744         an f2c-callable version, so indirect calling is still checked.
745         * intrin.def: Replace one GFRT field with the three new fields,
746         as appropriate for each DEFIMP intrinsic.
748         * com.c (ffecom_stabilize_aggregate_,
749         ffecom_convert_to_complex_): Make these `static'.
751 Thu Aug  7 11:24:34 1997  Craig Burley  <burley@gnu.ai.mit.edu>
753         Provide means for front end to determine actual
754         "standard" return type for an intrinsic if it is
755         passed as an actual argument:
756         * com.h, com.c (ffecom_gfrt_basictype,
757         ffecom_gfrt_kindtype): New functions.
758         (ffecom_gfrt_kind_type_): Replaced with new function.
759         All callers updated.
760         (ffecom_make_gfrt_): No longer need do anything
761         with kind type.
763         * intrin.c (ffeintrin_basictype, ffeintrin_kindtype):
764         Now returns correct type info for specific intrinsic
765         (based on type of run-time-library implementation).
767 Wed Aug  6 23:08:46 1997  Craig Burley  <burley@gnu.ai.mit.edu>
769         * global.c (ffeglobal_ref_progunit_): Don't reset
770         number of arguments just due to new type info,
771         so useful warnings can be issued.
773 1997-08-06  Dave Love  <d.love@dl.ac.uk>
775         * intrin.def: Fix IDATE_vxt argument order.
776         * intdoc.h: Likewise.
778 Thu Jul 31 22:22:03 1997  Craig Burley  <burley@gnu.ai.mit.edu>
780         * global.c (ffeglobal_proc_ref_arg): If REF/DESCR
781         disagreement, DESCR is CHARACTER, and types disagree,
782         pretend the argsummary agrees so the message ends up
783         being about type disagreement.
784         (ffeglobal_proc_def_arg): Ditto.
786         * expr.c (ffeexpr_token_first_rhs_3_): Set info for LABTOK
787         to NONE of everything, to avoid misdiagnosing filewide
788         usage of alternate returns.
790 Sun Jul 20 23:07:47 1997  Craig Burley  <burley@gnu.ai.mit.edu>
792         * com.c (ffecom_sym_transform_): If type gets set
793         to error_mark_node, just return that for transformed symbol.
794         (ffecom_member_phase2_): If type gets set to error_mark_node,
795         just return.
796         (ffecom_check_size_overflow_): Add `dummy' argument to
797         flag that type is for a dummy, update all callers.
799 Sun Jul 13 17:40:53 1997  Craig Burley  <burley@gnu.ai.mit.edu>
801         Fix 970712-1.f:
802         * where.c (ffewhere_set_from_track): If start point
803         is too large, just use initial start point.  0.6 should
804         fix all this properly.
806         Fix 970712-2.f:
807         * com.c (ffecom_sym_transform_): Preserve error_mark_node for type.
808         (ffecom_type_localvar_): Ditto.
809         (ffecom_sym_transform_): If type is error_mark_node,
810         don't error-check decl size, because back end responds by
811         setting that to an integer 0 instead of error_mark_node.
812         (ffecom_transform_common_): Same as earlier fix to _transform_
813         in that size is checked by dividing BITS_PER_UNIT instead of
814         multiplying.
815         (ffecom_transform_equiv_): Ditto.
817         Fix 970712-3.f:
818         * stb.c (ffestb_R10014_): Fix flaky fall-through in error
819         test for FFELEX_typeCONCAT by just replicating the code,
820         and do FFELEX_typeCOLONCOLON while at it.
822 1997-07-07  Dave Love  <d.love@dl.ac.uk>
824         * intdoc.h: Add various missing pieces; correct GMTIME, LTIME
825         result ordering.
827         * intrin.def, com-rt.def: Add alarm.
829         * com.c (ffecom_expr_intrinsic_): Add case for alarm.
831 Thu Jun 26 04:19:40 1997  Craig Burley  <burley@gnu.ai.mit.edu>
833         Fix 970302-3.f:
834         * com.c (ffecom_sym_transform_): For sanity-check compare
835         of gbe size of local variable to g77 expectation,
836         use varasm.c/assemble_variable technique of dividing
837         BITS_PER_UNIT out of gbe info instead of multiplying
838         g77 info up, to avoid crash when size in bytes is very
839         large, and overflows an `int' or similar when multiplied.
841         Fix 970626-2.f:
842         * com.c (ffecom_finish_symbol_transform_): Don't bother
843         transforming a dummy argument, to avoid a crash.
844         * ste.c (ffeste_R1227): Don't return a value if the
845         result decl, or its type, is error_mark_node.
847         Fix 970626-4.f:
848         * lex.c (ffelex_splice_tokens): `-fdollar-ok' is
849         irrelevant to whether a DOLLAR token should be made
850         from an initial character of `$'.
852         Fix 970626-6.f:
853         * stb.c (ffestb_do3_): DO iteration variable is an
854         lhs, not rhs, expression.
856         Fix 970626-7.f and 970626-8.f:
857         * expr.c (ffeexpr_cb_comma_i_1_): Set IMPDO expression
858         to have clean info, because undefined rank, for example,
859         caused crash on mangled source on UltraSPARC but not
860         on Alpha for a series of weird reasons.
861         (ffeexpr_cb_close_paren_): If not CLOSE_PAREN, push
862         opANY expression onto stack instead of attempting
863         to mimic what program might have wanted.
864         (ffeexpr_cb_close_paren_): Don't wrap opPAREN around
865         opIMPDO, just warn that it's gratuitous.
866         * bad.def (FFEBAD_IMPDO_PAREN): New warning.
868         Fix 970626-9.f:
869         * expr.c (ffeexpr_declare_parenthesized_): Must shut down
870         parsing in kindANY case, otherwise the parsing engine might
871         decide there's an ambiguity.
872         (ffeexpr_token_name_rhs_): Eliminate parentypeSUBROUTINE_
873         case, so we crash right away if it comes through.
874         * st.c, st.h, sta.c, sta.h (ffest_shutdown, ffesta_shutdown):
875         New functions.
877 Tue Jun 24 19:47:29 1997  Craig Burley  <burley@gnu.ai.mit.edu>
879         * com.c (ffecom_check_size_overflow_): New function
880         catches some cases of the size of a type getting
881         too large.  varasm.c must catch the rest.
882         (ffecom_sym_transform_): Use new function.
883         (ffecom_type_localvar_): Ditto.
885 Mon Jun 23 01:09:28 1997  Craig Burley  <burley@gnu.ai.mit.edu>
887         * global.c (ffeglobal_proc_def_arg): Fix comparison
888         of argno to #args.
889         (ffeglobal_proc_ref_arg): Ditto.
891         * lang-options.h, top.c: Rename `-fdebug' to `-fxyzzy',
892         since it's an unsupported internals option and some
893         poor user might guess that it does something.
895         * bad.def: Make a warning for each filewide diagnostic.
896         Put all filewides together.
897         * com.c (ffecom_sym_transform_): Don't substitute
898         known global tree for global entities when `-fno-globals'.
899         * global.c (ffeglobal_new_progunit_): Don't produce
900         fatal diagnostics about globals when `-fno-globals'.
901         Instead, produce equivalent warning when `-Wglobals'.
902         (ffeglobal_proc_ref_arg): Ditto.
903         (ffeglobal_proc_ref_nargs): Ditto.
904         (ffeglobal_ref_progunit_): Ditto.
905         * lang-options.h, top.c, top.h: New `-fno-globals' option.
907 Sat Jun 21 12:32:54 1997  Craig Burley  <burley@gnu.ai.mit.edu>
909         * expr.c (ffeexpr_fulfill_call_): Set array variable
910         to avoid warning about uninitialized variable.
912         * Make-lang.in: Get rid of any setting of HOST_* macros,
913         since these will break gcc's build!
914         * makefile: New file to make building derived files
915         easier.
917 Thu Jun 19 18:19:28 1997  Craig Burley  <burley@gnu.ai.mit.edu>
919         * g77.c (main): Install Emilio Lopes' patch to support
920         Ratfor, and to fix the printing of the version string
921         to go to stderr, not stdout.
922         * lang-specs.h: Install Emilio Lopes' patch to support
923         Ratfor, and patch the result to support picking up
924         `*f771' from the `specs' file.
926 Thu Jun 12 14:36:25 1997  Craig Burley  <burley@gnu.ai.mit.edu>
928         * storag.c (ffestorag_update_init, ffestorag_update_save):
929         Also update parent, in case equivalence processing
930         has already eliminated pointers to it via the
931         local equivalence info.
933 Tue Jun 10 14:08:26 1997  Craig Burley  <burley@gnu.ai.mit.edu>
935         * intdoc.c: Add cross-reference to end of description
936         of any generic intrinsic pointing to other intrinsics
937         with the same name.
939         Warn about explicit type declaration for intrinsic
940         that disagrees with invocation:
941         * expr.c (ffeexpr_paren_rhs_let_): Preserve type info
942         for intrinsic functions.
943         (ffeexpr_token_funsubstr_): Ditto.
944         * intrin.c (ffeintrin_fulfill_generic): Warn if type
945         info of fulfilled intrinsic invocation disagrees with
946         explicit type info given symbol.
947         (ffeintrin_fulfill_specific): Ditto.
948         * stc.c (ffestc_R1208_item): Preserve type info
949         for intrinsics.
950         (ffestc_R501_item): Ditto.
952 Mon Jun  9 17:45:44 1997  Craig Burley  <burley@gnu.ai.mit.edu>
954         * com.c (ffecom_expr_intrinsic_): Fix several of the
955         libU77/libF77-unix handlers to properly convert their
956         arguments.
958         * com-rt.def (FFECOM_gfrtFSTAT): Append missing "i" to
959         arg string.
961 Fri Jun  6 14:37:30 1997  Craig Burley  <burley@gnu.ai.mit.edu>
963         * com.c (ffecom_expr_intrinsic_): Have a case statement
964         for every intrinsic implementation, so missing ones
965         are caught via gcc warnings.
966         Don't call ffeintrin_codegen_imp anymore.
967         * intrin.c (ffeintrin_fulfill_generic): Remove cg_imp
968         stuff from here.
969         (ffeintrin_codegen_imp): Delete this function.
970         * intrin.def, intrin.h: Remove DEFIMQ stuff from here
971         as well.
973 Thu Jun  5 13:03:07 1997  Craig Burley  <burley@gnu.ai.mit.edu>
975         * top.c (ffe_decode_option): New -fbadu77-intrinsics-*
976         options.
977         * top.h: Ditto.
978         * intrin.h: New BADU77 family.
979         * intrin.c (ffeintrin_state_family): Ditto.
981         Implement new scheme to track intrinsic names vs. forms:
982         * intrin.c (ffeintrin_fulfill_generic),
983         (ffeintrin_fulfill_specific), (ffeintrin_is_intrinsic),
984         intrin.def: The documented name is now either in the
985         generic info or, if no generic, in the specific info.
986         For a generic, the specific info contains merely the
987         distinguishing form (usually "function" or "subroutine"),
988         used for diagnostics about ambiguous references and
989         in the documentation.
991         * intrin.def: Clean up formatting of DEFNAME block.
992         Convert many libU77 intrinsics into generics that
993         support both subroutine and function forms.
994         Put the function forms of side-effect routines into
995         the new BADU77 family.
996         Make MCLOCK and TIME return INTEGER*4 again, and add
997         INTEGER*8 equivalents called MCLOCK8 and TIME8.
998         Fix up more status return values to be written and
999         insist on them being I1 as well.
1000         * com.c (ffecom_expr_intrinsic_): Lots of changes to
1001         support new libU77 intrinsic interfaces.
1003 Mon Jun  2 00:37:53 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1005         * com.c (ffecom_init_0): Pointer type is now INTEGER(KIND=7),
1006         not INTEGER(KIND=0), since we want to reserve KIND=0 for
1007         future use.
1009 Thu May 29 14:30:33 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1011         Fix bugs preventing CTIME(I*4) from working correctly:
1012         * com.c (ffecom_char_args_): For FUNCREF case, process
1013         args to intrinsic just as they would be in
1014         ffecom_expr_intrinsic_.
1015         * com-rt.def (FFECOM_gfrtCTIME, FFECOM_gfrtTTYNAM): Fix
1016         argument decls to specify `&'.
1018 Wed May 28 22:19:49 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1020         Fix gratuitous warnings exposed by dophot aka 970528-1:
1021         * global.c (ffeglobal_proc_def_arg, ffeglobal_proc_ref_arg):
1022         Support distinct function/subroutine arguments instead of
1023         just procedures.
1024         * global.h: Ditto.
1025         * expr.c (ffeexpr_fulfill_call_): A SYMTER with kindNONE
1026         also is a procedure (either function or subroutine).
1028 Mon May 26 20:25:31 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1030         * bad.def: Have several lexer diagnostics refer to
1031         documentation for people who need more info on what Fortran
1032         source code is supposed to look like.
1034         * expr.c (ffeexpr_reduced_bool1_), bad.def: New diagnostics
1035         specific to .NOT. now mention only one operand instead
1036         of two.
1038         * g77.c: Recognize -fsyntax-only, similar to -c etc.
1039         (lookup_option): Fix bug that prevented non-`--' options
1040         from being recognized.
1042 Sun May 25 04:29:04 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1044         * intrin.def (FFEINTRIN_impCTIME): Accept `I*' expression
1045         for STime instead of requiring `I2'.
1047 Tue May 20 16:14:40 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1049         * symbol.c (ffesymbol_reference): All references to
1050         standard intrinsics are considered explicit, so as
1051         to avoid generating basically useless warnings.
1052         * intrin.c, intrin.h (ffeintrin_is_standard): Returns TRUE
1053         if intrinsic is standard.
1055 Sun May 18 21:14:59 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1057         * com-rt.def: Changed all external names of the
1058         form `"\([a-z0-9]*\)_' to `"G77_\1_0"' so as to
1059         allow any name valid as an intrinsic to be used
1060         as such and as a user-defined external procedure
1061         name or common block as well.
1063 Thu May  8 13:07:10 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1065         * expr.c (ffeexpr_cb_end_notloc_): For %VAL, %REF, and
1066         %DESCR, copy arg info into new node.
1068 Mon May  5 14:42:17 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1070         From Uwe F. Mayer <mayer@math.Vanderbilt.Edu>:
1071         * Make-lang.in (g77-cross): Fix typo in g77.c path.
1073         From Brian McIlwrath <bkm@star.rl.ac.uk>:
1074         * lang-specs.h: Have g77 pick up options from a section
1075         labeled `*f771' of the `specs' file.
1077 Sat May  3 02:46:08 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1079         * intrin.def (FFEINTRIN_defSIGNAL): Add optional `Status'
1080         argument that com.c already expects (per Dave Love).
1082         More changes to support better tracking of (filewide)
1083         globals, in particular, the arguments to procedures:
1084         * bad.def (FFEBAD_FILEWIDE_NARGS, FFEBAD_FILEWIDE_NARGS_W,
1085         FFEBAD_FILEWIDE_ARG, FFEBAD_FILEWIDE_ARG_W): New diagnostics.
1086         * expr.c (ffebad_fulfill_call_): Provide info on each
1087         argument to ffeglobal.
1088         * global.c, global.h (ffeglobal_proc_def_arg,
1089         ffeglobal_proc_def_nargs, ffeglobal_proc_ref_arg,
1090         ffeglobal_proc_ref_args): New functions.
1091         (ffeglobalArgSummary, ffeglobalArgInfo_): New types.
1093 Tue Apr 29 18:35:41 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1095         More changes to support better tracking of (filewide)
1096         globals:
1097         * expr.c (ffeexpr_fulfill_call_): New function.
1098         (ffeexpr_token_name_lhs_): Call after building procedure
1099         reference expression.  Also leave info field for ANY-ized
1100         expression alone.
1101         (ffeexpr_token_arguments_): Ditto.
1103 Mon Apr 28 20:04:18 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1105         Changes to support better tracking of (filewide)
1106         globals, mainly to avoid crashes due to inlining:
1107         * bad.def: Go back to quoting intrinsic names,
1108         (FFEBAD_FILEWIDE_DISAGREEMENT, FFEBAD_FILEWIDE_TIFF,
1109         FFEBAD_FILEWIDE_TYPE_MISMATCH): New diagnostics.
1110         (FFEBAD_INTRINSIC_EXPIMP, FFEBAD_INTRINSIC_GLOBAL): Reword
1111         for clarity.
1112         * com.c (ffecom_do_entry_, ffecom_start_progunit_,
1113         ffecom_sym_transform_): Accommodate new FFEGLOBAL_typeEXT
1114         possibility.
1115         * expr.c (ffeexpr_sym_lhs_call_, ffeexpr_sym_lhs_extfunc_,
1116         ffeexpr_sym_rhs_actualarg_, ffeexpr_declare_parenthesized_,
1117         ffeexpr_paren_rhs_let_, ffeexpr_token_funsubstr_):
1118         Fill in real kind info instead of leaving NONE where
1119         appropriate.
1120         Register references to intrinsics and globals with ffesymbol
1121         using new ffesymbol_reference function instead of
1122         ffesymbol_globalize.
1123         * global.c (ffeglobal_type_string_): New array for
1124         new diagnostics.
1125         * global.h, global.c:
1126         Replace ->init mechanism with ->tick mechanism.
1127         Move other common-related members into a substructure of
1128         a union, so the proc substructure can be introduced
1129         to include members related to externals other than commons.
1130         Don't complain about ANY-ized globals; ANY-ize globals
1131         once they're complained about, in any case where code
1132         generation could become a problem.
1133         Handle global entries that have NONE type (seen as
1134         intrinsics), EXT type (seen as EXTERNAL), and so on.
1135         Keep track of kind and type of externals, both via
1136         definition and via reference.
1137         Diagnose disagreements about kind or type of externals
1138         (such as functions).
1139         (ffeglobal_ref_intrinsic, ffeglobal_ref_progunit_): New
1140         functions.
1141         * stc.c (ffestc_R1207_item, ffestc_R1208_item,
1142         ffestc_R1219, ffestc_R1226):
1143         Call ffesymbol_reference, not ffesymbol_globalize.
1144         * stu.c (ffestu_sym_end_transition,
1145         ffestu_sym_exec_transition):
1146         Call ffesymbol_reference, not ffesymbol_globalize.
1147         * symbol.c (ffesymbol_globalize): Removed...
1148         (ffesymbol_reference): ...to this new function,
1149         which more generally registers references to symbols,
1150         globalizes globals, and calls on the ffeglobal module
1151         to check globals filewide.
1153         * global.h, global.c: Rename some macros and functions
1154         to more clearly distinguish common from other globals.
1155         All callers changed.
1157         * com.c (ffecom_sym_transform_): Trees describing
1158         filewide globals must be allocated on permanent obstack.
1160         * expr.c (ffeexpr_token_name_lhs_): Don't generate
1161         gratuitous diagnostics for FFEINFO_whereANY case.
1163 Thu Apr 17 03:27:18 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1165         * global.c: Add support for flagging intrinsic/global
1166         confusion via warnings.
1167         * bad.def (FFEBAD_INTRINSIC_EXPIMP,
1168         FFEBAD_INTRINSIC_GLOBAL): New diagnostics.
1169         * expr.c (ffeexpr_token_funsubstr_): Ditto.
1170         (ffeexpr_sym_lhs_call_): Ditto.
1171         (ffeexpr_paren_rhs_let_): Ditto.
1172         * stc.c (ffestc_R1208_item): Ditto.
1174 Wed Apr 16 22:40:56 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1176         * expr.c (ffeexpr_declare_parenthesized_): INCLUDE
1177         context can't be an intrinsic invocation either.
1179 Fri Mar 28 10:43:28 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1181         * expr.c (ffeexpr_token_arguments_): Make sure top of
1182         exprstack is operand before dereferencing operand field.
1184         * lex.c (ffelex_prepare_eos_): Fill up truncated
1185         hollerith token, so crash on null ->text field doesn't
1186         happen later.
1188         * stb.c (ffestb_R10014_): If NAMES isn't recognized (or
1189         the recognized part is followed in the token by a
1190         non-digit), don't try and collect digits, as there
1191         might be more than FFEWHERE_indexMAX letters to skip
1192         past to do so -- and the code is diagnosed anyway.
1194 Thu Mar 27 00:02:48 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1196         * com.c (ffecom_sym_transform_): Force local
1197         adjustable array onto stack.
1199         * stc.c (ffestc_R547_item_object): Don't actually put
1200         the symbol in COMMON if the symbol has already been
1201         EQUIVALENCE'd to a different COMMON area.
1203         * equiv.c (ffeequiv_add): Don't actually do anything
1204         if there's a disagreement over which COMMON area is
1205         involved.
1207 Tue Mar 25 03:35:19 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1209         * com.c (ffecom_transform_common_): If no explicit init
1210         of COMMON area, don't actually init it even though
1211         storage area suggests it.
1213 Mon Mar 24 12:10:08 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1215         * lex.c (ffelex_image_char_): Avoid overflowing the
1216         column counter itself, as well as the card image.
1218         * where.c (ffewhere_line_new): Cast ffelex_line_length()
1219         to (size_t) so 255 doesn't overflow to 0!
1221         * stc.c (ffestc_labeldef_notloop_begin_): Don't gratuitously
1222         terminate loop before processing statement, so block
1223         doesn't disappear out from under EXIT/CYCLE processing.
1224         (ffestc_labeldef_notloop_): Has old code from above
1225         function, instead of just calling it.
1227         * expr.c (ffeexpr_cb_comma_i_4_): Don't skip over
1228         arbitrary token (such as EOS).
1230         * com.c (ffecom_init_zero_): Handle RECORD_TYPE and
1231         UNION_TYPE so -fno-zeros works with -femulated-complex.
1233 1997-03-12  Dave Love  <d.love@dl.ac.uk>
1235         * intrin.def: New intrinsics INT2, INT8, CPU_TIME.  Fix AND, OR,
1236         XOR.  [Integrated by burley, AND/OR/XOR already fixed, INT8
1237         implementation changed/fixed.]
1239 Wed Mar 12 10:40:08 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1241         * Make-lang.in ($(srcdir)/f/intdoc.texi): Simplify rules
1242         so building f/intdoc is not always necessary; remove
1243         f/intdoc after running it if it is built.
1245 Tue Mar 11 23:42:00 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1247         * intrin.def (FFEINTRIN_impAND, FFEINTRIN_impOR,
1248         FFEINTRIN_impXOR): Use the IAND, IOR, and IEOR implementations
1249         of these, instead of crashing in ffecom_expr_intrinsic_
1250         or adding case labels there.
1252 Mon Mar 10 22:51:23 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1254         * intdoc.c: Fix so any C compiler can compile this.
1256 Fri Feb 28 13:16:50 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1258         * Version 0.5.20 released.
1260 Fri Feb 28 01:45:25 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1262         * Make-lang.in (RUNTIMESTAGESTUFF, LIBU77STAGESTUFF):
1263         Move some files incorrectly in the former to the latter,
1264         and add another file or two to the latter.
1266         New meanings for (KIND=n), and new denotations in the
1267         little language describing intrinsics:
1268         * com.c (ffecom_init_0): Assign new meanings.
1269         * intdoc.c: Document new meanings.
1270         Support the new denotations.
1271         * intrin.c: Employ new meanings, mapping them to internal
1272         values (which are the same as they ever were for now).
1273         Support the new denotations.
1274         * intrin.def: Switch DEFIMP table to the new denotations.
1276         * intrin.c (ffeintrin_check_): Fix bug that was leaving
1277         LOC() and %LOC() returning INTEGER*4 on systems where
1278         it should return INTEGER*8.
1280         * type.c: Canonicalize function definitions, for etags
1281         and such.
1283 Wed Feb 26 20:43:03 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1285         * com.c (ffecom_init_0): Choose INTEGER(KIND=n) types,
1286         where n is 2, 3, and 4, according to the new docs
1287         instead of according to the old C correspondences
1288         (which seem less useful at this point).
1290         * equiv.c (ffeequiv_destroy_): New function.
1291         (ffeequiv_layout_local_): Use this new function
1292         whenever the laying out of a local equivalence chain
1293         is aborted for any reason.
1294         Otherwise ensure that symbols no longer reference
1295         the stale ffeequiv entries that result when they
1296         are killed off in this procedure.
1297         Also, the rooted symbol is one that has storage,
1298         it really is irrelevant whether it has an equiv entry
1299         at this point (though the code to remove the equiv
1300         entry was put in at the end, just in case).
1301         (ffeequiv_kill): When doing internal checks, make
1302         sure the victim isn't named by any symbols it points
1303         to.  Not as complete a check as looking through the
1304         entire symbol table (which does matter, since some
1305         code in equiv.c used to remove symbols from the lists
1306         for an ffeequiv victim but not remove that victim as the
1307         symbol's equiv info), but this check did find some
1308         real bugs in the code (that were fixed).
1310 Mon Feb 24 16:42:13 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1312         * com.c (ffecom_expr_intrinsic_): Fix a couple of
1313         warnings about uninitialized variables.
1314         * intrin.c (ffeintrin_check_): Ditto, but there were
1315         a couple of _real_ uninitialized-variable _bugs_ here!
1316         (ffeintrin_fulfill_specific): Ditto, no real bug here.
1318 Sun Feb 23 15:01:20 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1320         Clean up diagnostics (especially about intrinsics):
1321         * bad.def (FFEBAD_UNIMPL_STMT): Remove.
1322         (FFEBAD_INTRINSIC_*, FFEBAD_NEED_INTRINSIC): Clean these
1323         up so they're friendlier.
1324         (FFEBAD_INTRINSIC_CMPAMBIG): New.
1325         * intrin.c (ffeintrin_fulfill_generic,
1326         ffeintrin_fulfill_specific, ffeintrin_is_intrinsic):
1327         Always choose
1328         generic or specific name text (which is for doc purposes
1329         anyway) over implementation name text (which is for
1330         internal use).
1331         * intrin.def: Use more descriptive name texts for generics
1332         and specifics in cases where the names themselves are not
1333         enough (e.g. IDATE, which has two forms).
1335         Fix some intrinsic mappings:
1336         * intrin.def (FFEINTRIN_specIDINT, FFEINTRIN_specAND,
1337         FFEINTRIN_specDFLOAT, FFEINTRIN_specDREAL, FFEINTRIN_specOR,
1338         FFEINTRIN_specXOR): Now have their own implementations,
1339         instead of borrowing from others.
1340         (FFEINTRIN_specAJMAX0, FFEINTRIN_specAJMIN0, FFEINTRIN_specBJTEST,
1341         FFEINTRIN_specDFLOTJ, FFEINTRIN_specFLOATJ, FFEINTRIN_specJIABS,
1342         FFEINTRIN_specJIAND, FFEINTRIN_specJIBCLR, FFEINTRIN_specJIBITS,
1343         FFEINTRIN_specJIBSET, FFEINTRIN_specJIDIM, FFEINTRIN_specJIDINT,
1344         FFEINTRIN_specJIDNNT, FFEINTRIN_specJIEOR, FFEINTRIN_specJIFIX,
1345         FFEINTRIN_specJINT, FFEINTRIN_specJIOR, FFEINTRIN_specJISHFT,
1346         FFEINTRIN_specJISHFTC, FFEINTRIN_specJISIN, FFEINTRIN_specJMAX0,
1347         FFEINTRIN_specJMAX1, FFEINTRIN_specJMIN0, FFEINTRIN_specJMIN1,
1348         FFEINTRIN_specJMOD, FFEINTRIN_specJNINT, FFEINTRIN_specJNOT,):
1349         Turn these implementations off, since it's not clear
1350         just what types they expect in the context of portable Fortran.
1351         (DFLOAT): Now in FVZ family, since f2c supports them
1353         Support intrinsic inquiry functions (BIT_SIZE, LEN):
1354         * intrin.c: Allow `i' in <arg_extra>.
1355         * intrin.def (FFEINTRIN_impBIT_SIZE, FFEINTRIN_impLEN):
1356         Mark args with `i'.
1358 Sat Feb 22 13:34:09 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1360         Only warn, don't error, for reference to unimplemented
1361         intrinsic:
1362         * bad.def (FFEBAD_INTRINSIC_UNIMPLW): Warning version
1363         of _UNIMPL.
1364         * intrin.c (ffeintrin_is_intrinsic): Use new warning
1365         version of _UNIMPL (FFEBAD_INTRINSIC_UNIMPLW).
1367         Complain about REAL(Z) and AIMAG(Z) (Z is DOUBLE COMPLEX):
1368         * bad.def (FFEBAD_INTRINSIC_CMPAMBIG): New diagnostic.
1369         * expr.c: Needed #include "intrin.h" anyway.
1370         (ffeexpr_token_intrincheck_): New function handles delayed
1371         diagnostic for "REAL(REAL(expr)" if next token isn't ")".
1372         (ffeexpr_token_arguments_): Do most of the actual checking here.
1373         * intrin.h, intrin.c (ffeintrin_fulfill_specific): New
1374         argument, check_intrin, to tell caller that intrin is REAL(Z)
1375         or AIMAG(Z).  All callers updated, mostly to pass NULL in
1376         for this.
1377         (ffeintrin_check_): Also has new arg check_intrin for same
1378         purpose.  All callers updated the same way.
1379         * intrin.def (FFEINTRIN_impAIMAG): Change return type
1380         from "R0" to "RC", to accommodate f2c (and perhaps other
1381         non-F90 F77 compilers).
1382         * top.h, top.c: New option -fugly-complex.
1384         New GNU intrinsics REALPART, IMAGPART, and COMPLEX:
1385         * com.c (ffecom_expr_intrinsic_): Implement impCOMPLEX
1386         and impREALPART here.  (specIMAGPART => specAIMAG.)
1387         * intrin.def: Add the intrinsics here.
1389         Rename implementations of VXTIDATE and VXTTIME to IDATEVXT
1390         and TIMEVXT, so they sort more consistently:
1391         * com.c (ffecom_expr_intrinsic_):
1392         * intrin.def:
1394         Delete intrinsic group `dcp', add `gnu', etc.:
1395         * intrin.c (ffeintrin_state_family): FFEINTRIN_familyGNU
1396         replaces FFEINTRIN_familyDCP, and gets state from `gnu'
1397         group.
1398         Get rid of FFEINTRIN_familyF2Z, nobody needs it.
1399         Move FFEINTRIN_specDCMPLX from DCP family to FVZ family,
1400         as f2c has it.
1401         Move FFEINTRIN_specDFLOAT from F2C family to FVZ family.
1402         (FFEINTRIN_specZABS, FFEINTRIN_specZCOS, FFEINTRIN_specZEXP,
1403         FFEINTRIN_specZLOG, FFEINTRIN_specZSIN, FFEINTRIN_specZSQRT):
1404         Move these from F2Z family to F2C family.
1405         * intrin.h (FFEINTRIN_familyF2Z, FFEINTRIN_familyDCP): Remove.
1406         (FFEINTRIN_familyGNU): Add.
1407         * top.h, top.c: Replace `dcp' with `gnu'.
1409         * com.c (ffecom_expr_intrinsic_): Clean up by collecting
1410         simple conversions into one nice, conceptual place.
1411         Fix up some intrinsic subroutines (MVBITS, KILL, UMASK) to
1412         properly push and pop call temps, to avoid wasting temp
1413         registers.
1415         * g77.c (doit): Toon says variables should be defined
1416         before being referenced.  Spoilsport.
1418         * intrin.c (ffeintrin_check_): Now Dave's worried about
1419         warnings about uninitialized variables.  Okay, so for
1420         basic return values 'g' and 's', they _were_
1421         uninitialized -- is determinism really _that_ useful?
1423         * intrin.def (FFEINTRIN_impFGETC): Fix STATUS argument
1424         so that it is INTENT(OUT) instead of INTENT(IN).
1426 1997-02-21  Dave Love  <d.love@dl.ac.uk>
1428         * intrin.def, com.c: Support Sun-type `short' and `long'
1429         intrinsics.  Perhaps should also do Microcruft-style `int2'.
1431 Thu Feb 20 15:16:53 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1433         * com.c (ffecom_expr_intrinsic_): Clean up indentation.
1434         Support SECONDSUBR intrinsic implementation.
1435         Rename SECOND to SECONDFUNC for direct support via library.
1437         * g77.c: Fix to return proper status value to shell,
1438         by obtaining it from processes it spawns.
1440         * intdoc.c: Fix minor typo.
1442         * intrin.def: Turn SECOND into generic that maps into
1443         function and subroutine forms.
1445         * intrin.def: Make FLOAT and SNGL into specific intrinsics.
1447         * intrin.def, intrin.h: Change the way DEFGEN and DEFSPEC
1448         macros work, to save on verbage.
1450 Mon Feb 17 02:08:04 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1452         New subsystem to automatically generate documentation
1453         on intrinsics:
1454         * Make-lang.in ($(srcdir)/f/g77.info,
1455         $(srcdir)/f/g77.dvi): Move g77 doc rules around.
1456         Add to g77 doc rules the new subsystem.
1457         (f77.mostlyclean, f77.maintainer-clean): Also clean up
1458         after new doc subsystem.
1459         * intdoc.c, intdoc.h: New doc subsystem code.
1460         * intrin.h [FFEINTRIN_DOC]: When 1, don't pull in
1461         stuff not needed by doc subsystem.
1463         Improve on intrinsics mechanism to both be more
1464         self-documenting and to catch more user errors:
1465         * intrin.c (ffeintrin_check_): Recognize new arg-len
1466         and arg-rank information, and check it.
1467         Move goto and signal indicators to the basic type.
1468         Permit reference to arbitrary argument number, not
1469         just first argument (for BESJN and BESYN).
1470         (ffeintrin_init_0): Check and accept new notations.
1471         * intrin.c, intrin.def: Value in COL now identifies
1472         arguments starting with number 0 being the first.
1474         Some minor intrinsics cleanups (resulting from doc work):
1475         * com.c (ffecom_expr_intrinsic_): Implement FLUSH
1476         directly once again, handle its optional argument,
1477         so it need not be a generic (awkward to handle in docs).
1478         * intrin.def (BESJ0, BESJ1, BESJN, BESY0, BESY1, BESYN,
1479         CHDIR, CHMOD, CTIME, DBESJ0, DBESJ1, DBESJN, DBESY0,
1480         DBESY1, DBESYN, DDIM, ETIME, FGETC, FNUM, FPUTC, FSTAT,
1481         GERROR, GETCWD, GETGID, GETLOG, GETPID, GETUID, GMTIME,
1482         HOSTNM, IDATE, IERRNO, IIDINT, IRAND, ISATTY, ITIME, JIDINT,
1483         LNBLNK, LSTAT, LTIME, MCLOCK, PERROR, SRAND, SYMLNK, TTYNAM,
1484         UMASK): Change capitalization of initcaps (official) name
1485         to be consistent with Burley's somewhat arbitrary rules.
1486         (BESJN, BESYN): These have return arguments of same type
1487         as their _second_ argument.
1488         (FLUSH): Now a specific, not generic, intrinsic, with one
1489         optional argument.
1490         (FLUSH1): Eliminated.
1491         Add arg-len and arg-rank info to several intrinsics.
1492         (ITIME): Change argument type from REAL to INTEGER.
1494 Tue Feb 11 14:04:42 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1496         * Make-lang.in (f771): Invocation of Makefile now done
1497         with $(srcdir)=gcc to go along with $(VPATH)=gcc.
1498         ($(srcdir)/f/runtime/configure,
1499         $(srcdir)/f/runtime/libU77/configure): Break these out
1500         so spurious triggers of this rule don't happen (as when
1501         configure.in is more recent than libU77/configure).
1502         (f77.rebuilt): Distinguish source versus build files,
1503         so this target can be invoked from build directory and
1504         still work.
1505         * Makefile.in: This now expects $(srcdir) to be the gcc
1506         source directory, not gcc/f, to agree with $(VPATH).
1507         Accordingly, $(INCLUDES) has been fixed, various cruft
1508         removed, the removal of f771 has been fixed to remove
1509         the _real_ f771 (not the one in gcc's parent directory),
1510         and so on.
1512         * lex.c: Part of ffelex_finish_statement_() now done
1513         by new function ffelex_prepare_eos_(), so that, in one
1514         popular case, the EOS can be prepared while the pointer
1515         is at the end of the non-continued line instead of the
1516         end of the line that marks no continuation.  This improves
1517         the appearance of diagnostics substantially.
1519 Mon Feb 10 12:44:06 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1521         * Make-lang.in: runtime Makefile's, and include/f2c.h,
1522         also depend on f/runtime/configure and f/runtime/libU77/configure.
1524         Fix various libU77 routines:
1525         * com-rt.def (FFECOM_gfrtCTIME, FFECOM_gfrtMCLOCK,
1526         FFECOM_gfrtTIME): These now use INTEGER*8 for time values,
1527         for compatibility with systems like Alpha.
1528         (FFECOM_gfrtSYSTEM_CLOCK, FFECOM_gfrtTTYNAM): Delete incorrect
1529         trailing underscore in routine names.
1530         * intrin.c, intrin.def: Support INTEGER*8 return values and
1531         arguments ('4').  Change FFEINTRIN_impCTIME, FFEINTRIN_impMCLOCK,
1532         and FFEINTRIN_impTIME accordingly.
1533         (ffeintrin_is_intrinsic): Don't give caller a clue about
1534         form of intrinsic -- shouldn't be needed at this point.
1536         Cope with generic intrinsics that are subroutines and functions:
1537         * com.c (ffecom_finish_symbol_transform_, ffecom_expr_transform_):
1538         Don't transform an intrinsic that is not known to be a subroutine
1539         or a function.  (Maybe someday have to avoid transforming
1540         any intrinsic with an undecided or unknown implementation.)
1541         * expr.c (ffeexpr_declare_unadorned_,
1542         ffeexpr_declare_parenthesized_): Ok to invoke generic
1543         intrinsic that has at least one subroutine form as a
1544         subroutine.
1545         Ok to pass intrinsic as actual arg if it has a known specific
1546         intrinsic form that is valid as actual arg.
1547         (ffeexpr_declare_parenthesized_): An unknown kind of
1548         intrinsic has a paren_type chosen based on context.
1549         (ffeexpr_token_arguments_): Build funcref/subrref based
1550         on context, not on kind of procedure being called.
1551         * intrin.h, intrin.c (ffeintrin_is_intrinsic): Undo changes of
1552         Tue Feb  4 23:12:04 1997 by me, change all callers to leave
1553         intrinsics as FFEINFO_kindNONE at this point.  (Some callers
1554         also had unused variables deleted as a result.)
1556         Enable all intrinsic groups (especially f90 and vxt):
1557         * target.h (FFETARGET_defaultSTATE_DCP, FFETARGET_defaultSTATE_F2C,
1558         FFETARGET_defaultSTATE_F90, FFETARGET_defaultSTATE_MIL,
1559         FFETARGET_defaultSTATE_UNIX, FFETARGET_defaultSTATE_VXT):
1560         Delete these macros, let top.c set them directly.
1561         * top.c (ffeintrinsic_state_dcp_, ffe_intrinsic_state_f2c_,
1562         ffe_intrinsic_state_f90_, ffe_intrinsic_state_mil_,
1563         ffe_intrinsic_state_unix_, ffe_intrinsic_state_vxt_):
1564         Enable all these directly.
1566 Sat Feb  8 03:21:50 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1568         * g77.c: Incorporate recent changes to ../gcc.c.
1569         For version magic (e.g. `g77 -v'), instead of compiling
1570         /dev/null, write, compile, run, and then delete a small
1571         program that prints the version numbers of the three
1572         components of libf2c (libF77, libI77, and libU77),
1573         so we get this info with bug reports.
1574         Also, this change reduces the chances of accidentally
1575         linking to an old (complex-alias-problem) libf2c.
1576         Fix `-L' so the argument is expected in `-Larg'.
1578         * com.h (FFECOM_f2cLONGINT): For INTEGER*8 support in f2c.h,
1579         dynamically determine proper type here, instead of
1580         assuming `long long int' is correct.
1582 Tue Feb  4 23:12:04 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1584         Add libU77 library from Dave Love <d.love@dl.ac.uk>:
1585         * Make-lang.in (f77-runtime): Depend on new Makefile.
1586         (f/runtime/libU77/Makefile): New rule.
1587         Also configure libU77.
1588         ($(srcdir)/f/runtime/configure: Use Makefile.in,
1589         so configuration doesn't have to have happened.
1590         (f77.mostlyclean, f77.clean, f77.distclean,
1591         f77.maintainer-clean): Some fixups here, but more work
1592         needed.
1593         (RUNTIMESTAGESTUFF): Add libU77's config.status.
1594         (LIBU77STAGESTUFF, f77.stage1, f77.stage2, f77.stage3,
1595         f77.stage4): New macro, appropriate uses added.
1596         * com-rt.def: Add libU77 procedures.
1597         * com.c (ffecom_f2c_ptr_to_integer_type_node,
1598         ffecom_f2c_ptr_to_real_type_node): New type nodes.
1599         (FFECOM_rttypeCHARACTER_): New type of run-time function.
1600         (ffecom_char_args_): Handle CHARACTER*n intrinsics
1601         where n != 1 here, instead of in ffecom_expr_intrinsic_.
1602         (ffecom_expr_intrinsic_): New code to handle new
1603         intrinsics.
1604         In particular, change how FFEINTRIN_impFLUSH is handled.
1605         (ffecom_make_gfrt_): Handle new type of run-time function.
1606         (ffecom_init_0): Initialize new type nodes.
1607         * config-lang.in: New libU77 directory.
1608         * intrin.h, intrin.c (ffeintrin_is_intrinsic): Handle
1609         potential generic for subroutine _and_ function
1610         specifics via two new arguments.  All callers changed.
1611         Properly ignore deleted/disabled intrinsics in resolving
1612         generics.
1613         (ffeintrin_check_, ffeintrin_init_0): Handle CHARACTER intrinsics of (*)
1614         length.
1615         * intrin.def: Permission granted by FSF to place this in
1616         public domain, which will allow it to serve as source
1617         for both g77 program and its documentation.
1618         Add libU77 intrinsics.
1619         (FLUSH): Now a generic, not specific, intrinsic.
1620         (DEFIMP): Now support return modifier for CHARACTER intrinsics.
1622         * com-rt.def (FFECOM_gfrtDIM, FFECOM_gfrtERF,
1623         FFECOM_gfrtERFC, FFECOM_gfrtEXP, FFECOM_gfrtSIGN,
1624         FFECOM_gfrtSIN, FFECOM_gfrtSINH, FFECOM_gfrtTAN,
1625         FFECOM_gfrtTANH, FFECOM_gfrtPOW_RI): Change "&r" to "&f".
1627 Sat Feb  1 12:15:09 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1629         * Version 0.5.19.1 released.
1631         * com.c (ffecom_expr_, ffecom_expr_intrinsic_,
1632         ffecom_tree_divide_): FFECOM_gfrtPOW_ZI,
1633         FFECOM_gfrtCONJG, FFECOM_gfrtDCONJG,
1634         FFECOM_gfrtCCOS, FFECOM_gfrtCDCOS,
1635         FFECOM_gfrtCLOG, FFECOM_gfrtCDLOG,
1636         FFECOM_gfrtCSIN, FFECOM_gfrtCDSIN,
1637         FFECOM_gfrtCSQRT, FFECOM_gfrtCDSQRT,
1638         FFECOM_gfrtDIV_CC, FFECOM_gfrtDIV_ZZ: These all require
1639         result to _not_ overlap one or more inputs.
1641 Sat Feb  1 00:25:55 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1643         * com.c (ffecom_init_0): Do internal checks only if
1644         -fset-g77-defaults not specified.
1646         Fix %LOC(), LOC() to return sufficiently wide type:
1647         * com.h, com.c (ffecom_pointer_kind_, ffecom_label_kind_,
1648         ffecom_pointer_kind(), ffecom_label_kind()): New globals
1649         and accessor macros hold kind for integer pointers on target
1650         machine.
1651         (ffecom_init_0): Determine narrowest INTEGER type that
1652         can hold a pointer (usually INTEGER*4 or INTEGER*8),
1653         store it in ffecom_pointer_kind_, etc.
1654         * expr.c (ffeexpr_cb_end_loc_): Use right type for %LOC().
1655         * intrin.c (ffeintrin_check_, ffeintrin_init_0): Support
1656         new 'p' kind for type of intrinsic.
1657         * intrin.def (FFEINTRIN_impLOC): Returns "Ip" instead of "I1",
1658         so LOC() type is correct for target machine.
1660         Support -fugly-assign:
1661         * lang-options.h, top.h, top.c (ffe_decode_option):
1662         Accept -fugly-assign and -fno-ugly-assign.
1663         * com.c (ffecom_expr_): Handle -fugly-assign.
1664         * expr.c (ffeexpr_finished_): Check right type for ASSIGN
1665         contexts.
1667 Fri Jan 31 14:30:00 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1669         Remove last vestiges of -fvxt-not-f90:
1670         * stb.c (ffestb_R10012_, ffestb_R10014_, ffestb_V0201_):
1671         top.c, top.h:
1673 Fri Jan 31 02:13:54 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1675         * top.c (ffe_decode_option): Warn if -fugly is specified,
1676         it'll go away soon.
1678         * symbol.h: No need to #include "bad.h".
1680         Reorganize features from -fvxt-not-f90 to -fvxt:
1681         * lang-options.h, top.h, top.c:
1682         Accept -fvxt and -fno-vxt, but not -fvxt-not-f90 or -ff90-not-vxt.
1683         Warn if the latter two are used.
1684         * expr.c (ffeexpr_nil_rhs_): Double-quote means octal constant.
1685         (ffeexpr_token_rhs_): Double-quote means octal constant.
1686         * target.h (FFETARGET_defaultIS_VXT_NOT_90): Delete macro
1687         definition, no longer needed.
1689         Make some -ff90 features the default:
1690         * data.c (ffedata_value): DATA implies SAVE.
1691         * src.h (ffesrc_is_name_noninit): Underscores always okay.
1693         Fix up some more #error directives by quoting their text:
1694         * bld.c (ffebld_constant_is_zero):
1695         * target.h:
1697 Sat Jan 18 18:22:09 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1699         * g77.c (lookup_option, main): Recognize `-Xlinker',
1700         `-Wl,', `-l', `-L', `--library-directory', `-o',
1701         `--output'.
1702         (lookup_option): Don't depend on SWITCH_TAKES_ARG
1703         being correct, it might or might not have `-x' in
1704         it depending on host.
1705         Return NULL argument if it would be an empty string.
1706         (main): If no input files (by gcc.c's definition)
1707         but `-o' or `--output' specified, produce diagnostic
1708         to avoid overwriting output via gcc.
1709         Recognize C++ `+e' options.
1710         Treat -L as another non-magical option (like -B).
1711         Don't append_arg `-x' twice.
1713 Fri Jan 10 23:36:00 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1715         * top.c [BUILT_FOR_270] (ffe_decode_option): Make
1716         -fargument-noalias-global the default.
1718 Fri Jan 10 07:42:27 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1720         Enable inlining of previously-compiled program units:
1721         * com.c (ffecom_do_entry_, ffecom_start_progunit_):
1722         Register new public function in ffeglobal database.
1723         (ffecom_sym_transform_): Any GLOBAL or potentially GLOBAL
1724         symbol should be looked up in ffeglobal database and
1725         that tree node used, if found.  That way, gcc knows
1726         the references are to those earlier definitions, so it
1727         can emit shorter branches/calls, inline, etc.
1728         (ffecom_transform_common_): Minor change for clarity.
1729         * expr.c (ffeexpr_sym-lhs_call_, ffeexpr_sym_lhs_extfunc_,
1730         ffeexpr_sym_rhs_actualarg_, ffeexpr_paren_rhs_let_,
1731         ffeexpr_token_funsubstr_): Globalize symbol as needed.
1732         * global.c (ffeglobal_promoted): New function to look up
1733         existing local symbol in ffeglobal database.
1734         * global.h: Declare new function.
1735         * name.h (ffename_token): New macro, plus alphabetize.
1736         * stc.c (ffestc_R1207_item): Globalize EXTERNAL symbol.
1737         * stu.c (ffestu_sym_end_transition, ffestu_sym_exec_transition):
1738         Globalize symbol as needed.
1739         * symbol.h, symbol.c (ffesymbol_globalize): New function.
1741 Thu Jan  9 14:20:00 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1743         * ste.c (ffeste_R809): Produce a diagnostic for SELECT CASE
1744         on CHARACTER type, instead of crashing.
1746 Thu Jan  9 00:52:45 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1748         * stc.c (ffestc_order_entry_, ffestc_order_format_,
1749         ffestc_R1226): Allow ENTRY and FORMAT before IMPLICIT
1750         NONE, by having them transition only to state 1 instead
1751         of state 2 (which is disallowed by IMPLICIT NONE).
1753 Mon Jan  6 22:44:53 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1755         Fix AXP bug found by Rick Niles (961201-1.f):
1756         * com.c (ffecom_init_0): Undo my 1996-05-14 change, as
1757         it is incorrect and prevented easily finding this bug.
1758         * target.h [__alpha__] (ffetargetReal1, ffetargetReal2):
1759         Use int instead of long.
1760         (ffetarget_cvt_r1_to_rv_, ffetarget_cvt_rv_to_r1_,
1761         ffetarget_cvt_r2_to_rv_, ffetarget_cvt_rv_to_r2_):
1762         New functions that intercede for callers of
1763         REAL_VALUE_(TO|UNTO)_TARGET_(SINGLE|DOUBLE).
1764         All callers changed, and damaging casts to (long *) removed.
1766 Sun Jan  5 03:26:11 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1768         * Make-lang.in (g77, g77-cross): Depend on both g77.c and
1769         zzz.c, in $(srcdir)/f/.
1771         Better design for -fugly-assumed:
1772         * stc.c (ffestc_R501_item, ffestc_R524_item,
1773         ffestc_R547_item_object): Pass new is_ugly_assumed flag.
1774         * stt.c, stt.h (ffestt_dimlist_as_expr,
1775         ffestt_dimlist_type): New is_ugly_assumed flag now
1776         controls whether "1" is treated as "*".
1777         Don't treat "2-1" or other collapsed constants as "*".
1779 Sat Jan  4 15:26:22 1997  Craig Burley  <burley@gnu.ai.mit.edu>
1781         * stb.c (ffestb_R10012_): Don't confirm on FORMAT(A,)
1782         or even FORMAT(A,,B), as R1229 only warns about the
1783         former currently, and this seems reasonable.
1785         Improvements to diagnostics:
1786         * sta.c (ffesta_second_): Don't add any ffestb parsers
1787         unless they're specifically called for.
1788         Set up ffesta_tokens[0] before calling ffestc_exec_transition,
1789         else stale info might get used.
1790         (ffesta_save_): Do a better job picking which parser to run
1791         after running all parsers with no confirmed possibles.
1792         (FFESTA_maxPOSSIBLES_): Decrease from 100 now that so few
1793         possibles are ever on the list at a given time.
1794         (struct _ffesta_possible): Add named attribute.
1795         (ffesta_add_possible_exec_, ffesta_add_possible_nonexec_):
1796         Make these into macros that call a single function that now
1797         sets the named attribute.
1798         (ffesta_add_possible_unnamed_exec_,
1799         ffeseta_add_possible_unnamed_nonexec_): New macros.
1800         (ffesta_second_): Designate unnamed possibles as
1801         appropriate.
1802         * stb.c (ffestb_R1229, ffestb_R12291_): Use more general
1803         diagnostic, so things like "POINTER (FOO, BAR)" are
1804         diagnosed as unrecognized statements, not invalid statement
1805         functions.
1806         * stb.h, stb.c (ffestb_unimplemented): Remove function.
1808 1996-12-30  Dave Love  <d.love@dl.ac.uk>
1810         * com.c: #include libU77/config.h
1811         (ffecom_f2c_ptr_to_integer_type_node,
1812         ffecom_f2c_ptr_to_integer_type_node): New variables.
1813         (ffecom_init_0): Use them.
1814         (ffecom_expr_intrinsic_): Many news cases for libU77 intrinsics.
1816         * com-rt.def: New definitions for libU77.
1817         * intrin.def: Likewise.  Also correct ftell arg spec.
1819         * Makefile.in (f/runtime/libU77/config.h): New target for com.c
1820         dependency.
1821         * Make-lang.in (f771): Depend on f/runtime/Makefile for the above.
1823 Sat Dec 28 12:28:29 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1825         * stt.c (ffestt_dimlist_type):  Treat ([...,]1) in dimlist
1826         as ([...,]*) if -fugly-assumed, so assumed-size array
1827         detected early enough.
1829 Thu Dec 19 14:01:57 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1831         * target.h (FFETARGET_REAL_VALUE_FROM_INT_): Conditionalize
1832         definition on BUILT_FOR_280, not BUILT_WITH_280, since
1833         the name of the macro was (properly) changed since 0.5.19.
1835         Fix warnings/errors resulting from ffetargetOffset becoming
1836         `long long int' instead of `unsigned long' as of 0.5.19,
1837         while ffebitCount remains `unsigned long':
1838         * bld.c (ffebld_constantarray_dump): Avoid warnings by
1839         using loop var of appropriate type, and using casts.
1840         * com.c (ffecom_expr_): Use right type for loop var.
1841         (ffecom_sym_transform_, ffecom_transform_equiv_):
1842         Cast to right type in assertions.
1843         * data.c (ffedata_gather_, ffedata_value_): Cast to right
1844         type in assertions and comparisons.
1846 Wed Dec 18 12:07:11 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1848         Patch from Alexandre Oliva <oliva@dcc.unicamp.br>:
1849         * Makefile.in (all.indirect): Don't pass -bbigtoc option
1850         to GNU ld.
1852         Cope with new versions of gcc:
1853         * com.h (BUILT_FOR_280): New macro.
1854         * com.c (ffecom_ptr_to_expr): Conditionalize test of
1855         OFFSET_REF.
1856         (ffecom_build_complex_constant_): Conditionalize calling
1857         sequence for build_complex.
1859 Sat Dec  7 07:15:17 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1861         * Version 0.5.19 released.
1863 Fri Dec  6 12:23:55 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1865         * g77.c: Default to assuming "f77" is in $LANGUAGES, since
1866         the LANGUAGE_F77 macro isn't defined by anyone anymore (but
1867         might as well leave the no-f77 code in just in case).
1868         * Make-lang.in (g77, g77-cross): Don't define LANGUAGE_F77
1869         anymore.
1871 1996-12-06  Dave Love  <d.love@dl.ac.uk>
1873         * Make-lang.in (g77, g77-cross): Revert to building `g77' or not
1874         conditional on `f77' in LANGUAGES.
1876 Wed Dec  4 13:08:44 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1878         * Make-lang.in (g77, g77-cross): No libs or lib dependencies
1879         in case where "f77" is not in $LANGUAGES.
1881         * lex.c (ffelex_image_char_, ffelex_file_fixed,
1882         ffelex_file_free): Fixes to properly handle lines with
1883         null character, and too-long lines as well.
1885         * lex.c: Call ffebad_start_msg_lex instead of
1886         ffebad_start_msg throughout.
1888 Sun Dec  1 21:19:55 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1890         Fix-up for 1996-11-25 changes:
1891         * com.c (ffecom_member_phase2_): Subtract out 0 offset for
1892         elegance and consistency with EQUIVALENCE aggregates.
1893         (ffecom_sym_transform_): Ditto for LOCAL/COMMON, and
1894         ensure we get the same parent storage area.
1895         * data.c (ffedata_gather_, ffedata_value_): Subtract out
1896         aggregate offset.
1898 Wed Nov 27 13:55:57 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1900         * proj.h: Quote the text of the #error message, to avoid
1901         strange-looking diagnostics from non-gcc ANSI compilers.
1903         * top.c: Make -fno-debug-kludge the default.
1905 Mon Nov 25 20:13:45 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1907         Provide more info on EQUIVALENCE mismatches:
1908         * bad.def (FFEBAD_EQUIV_MISMATCH): More detailed message.
1909         * equiv.c (ffeequiv_layout_local_, ffeequiv_layout_cblock):
1910         More details for FFEBAD_EQUIV_MISMATCH.
1912         Fix problem with EQUIVALENCE handling:
1913         * equiv.c (ffeequiv_layout_local_): Redesign algorithm --
1914         old one was broken, resulting in rejection of good code.
1915         (ffeequiv_offset_): Add argument, change callers.
1916         Clean up the code, fix up the (probably unused) negative-value
1917         case for SYMTER.
1918         * com.c (ffecom_sym_transform_): For local EQUIVALENCE
1919         member, subtract out aggregate offset (which is <= 0).
1921 Thu Nov 21 12:44:56 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1923         Change type of ffetargetOffset from `unsigned long' to `long long':
1924         * bld.c (ffebld_constantarray_dump): Change printf formats.
1925         * storag.c (ffestorag_dump): Ditto.
1926         * symbol.c (ffesymbol_report): Ditto.
1927         * target.h (ffetargetOffset_f): Ditto and change type itself.
1929         Handle situation where list of languages does not include f77:
1930         * Make-lang.in: Define LANGUAGE_F77 to 1 only if `f77' is in
1931         the $LANGUAGES macro for the build.
1932         * g77.c: Compile to a (nearly) no-op program if LANGUAGE_F77
1933         is not defined to 1.
1935         Fixes to delay confirmation of READ, WRITE, and GOTO statements
1936         so the corresponding assignments to same-named CHAR*(*) arrays
1937         work:
1938         * stb.c (ffestb_R90915_, ffestb_91014_): New functions.
1939         (ffestb_goto3_, ffestb_goto5_): Move confirmation from 3 to 5
1940         for the OPEN_PAREN case.
1941         (ffestb_R9091_, ffestb_R9094_, ffestb_R90913_, ffestb_R90914_,
1942         ffestb_R91012_, ffestb_R91013_): Use new functions, and confirm
1943         except for the OPEN_PAREN case.
1945         Fixes to not confirm declarations with an open paren where
1946         an equal sign or other assignment-like token might be, so the
1947         corresponding assignments to same-named CHAR*(*) arrays work:
1948         (ffestb_decl_entsp_5_): Move assertion so we crash on that first,
1949         if it turns out to be wrong, before the less-debuggable crash
1950         on mistaken confirmation.
1951         (ffestb_decl_entsp_6_, ffestb_decl_entsp_7_, ffestb_decl_entsp_8_):
1952         Include OPEN_PAREN in list of assignment-only tokens.
1954         Fix more diagnosed-crash bugs:
1955         * stu.c (ffestu_sym_end_transition): ANY-ize an adjustable array
1956         with bad dimension expressions even if still stateUNCERTAIN.
1957         (ffestu_symter_end_transition_, ffestu_symter_exec_transition_):
1958         Return TRUE for opANY as well.
1959         For code elegance, move opSYMTER case into first switch.
1961 1996-11-17  Dave Love  <d.love@dl.ac.uk>
1963         * lex.c: Fix last change.
1965 1996-11-14  Dave Love  <d.love@dl.ac.uk>
1967         * Make-lang.in, config-lang.in: Remove the (broken) libU77 stuff,
1968         pending 0.5.20.
1970 Thu Nov 14 15:40:59 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1972         * bad.def (FFEBAD_UNIMPL_STMT): Explain that invalid
1973         intrinsic references can trigger this message, too.
1975 1996-11-12  Dave Love  <d.love@dl.ac.uk>
1977         * lex.c: Declare dwarfout routines.
1979         * config-lang.in: Sink grep o/p.
1981 Mon Nov 11 14:21:13 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1983         * g77.c (main): Might as well print version number
1984         for --verbose as well.
1986 Thu Nov  7 18:41:41 1996  Craig Burley  <burley@gnu.ai.mit.edu>
1988         * expr.c, lang-options.h, target.h, top.c, top.h: Split out
1989         remaining -fugly stuff into -fugly-logint and -fugly-comma,
1990         leaving -fugly as simply a `macro' that expands into other
1991         options, and eliminate defaults for some of the ugly stuff
1992         in target.h.
1994         * Make-lang.in (gcc-cross): Compile zzz.c, not version.o (!),
1995         in to get version info for this target.
1997         * config-lang.in: Test for GBE patch application based
1998         on whether 2.6.x or 2.7.x GBE is detected.
2000 Wed Nov  6 14:19:45 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2002         * Make-lang.in (g77): Compile zzz.c in to get version info.
2003         * g77.c: Add support for --help and --version.
2005         * g77.c (lookup_option): Short-circuit long-winded tests
2006         when second char is not hyphen, just to save a spot of time.
2008 Sat Nov  2 13:50:31 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2010         * intrin.def: Add FTELL and FSEEK intrinsics, plus new
2011         `g' codes for alternate-return (GOTO) arguments.
2012         * intrin.c (ffeintrin_check_): Support `g' codes.
2013         * com-rt.def: Add ftell_() and fseek_() to database.
2014         * com.c (ffecom_expr_intrinsic_): Ditto.  Also, let each
2015         subroutine intrinsic decide for itself what to do with
2016         tree_type, the default being NULL_TREE once again (so
2017         ffecom_call_ doesn't think it's supposed to cast the
2018         function call to the type in the fall-through case).
2020         * ste.c (ffeste_R909_finish): Don't special-case list-directed
2021         I/O, now that libf2c can return non-zero status codes.
2022         (ffeste_R910_finish): Ditto.
2023         (ffeste_io_call_): Simplify logic.
2024         (ffeste_io_impdo_):
2025         (ffeste_subr_beru_):
2026         (ffeste_R904):
2027         (ffeste_R907):
2028         (ffeste_R909_start):
2029         (ffeste_R909_item):
2030         (ffeste_R909_finish):
2031         (ffeste_R910_start):
2032         (ffeste_R910_item):
2033         (ffeste_R910_finish):
2034         (ffeste_R911_start):
2035         (ffeste_R923A): Ditto all the above.
2037 Thu Oct 31 20:56:28 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2039         * config-lang.in, Make-lang.in: Rename flag file
2040         build-u77 to build-libu77, for consistency with
2041         install-libf2c and such.
2043         * config-lang.in: Don't complain about failure to patch
2044         if pre-2.7.0 gcc is involved (since our patch for that
2045         doesn't add support for tooning).
2047 Sat Oct 26 05:56:51 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2049         * bad.def (FFEBAD_TYPELESS_TOO_LARGE): Remove this
2050         unused and redundant diagnostic.
2052 Sat Oct 26 00:45:42 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2054         * target.c (ffetarget_integerhex): Fix dumb bug.
2056 1996-10-20  Dave Love  <d.love@dl.ac.uk>
2058         * gbe/2.7.2.1.diff: New file.
2060         * Makefile.in (F771_LDFLAGS): Add -bbigtoc for AIX4.1 up, suggested by
2061         endo@material.tohoku.ac.jp [among others!].
2063 Sat Oct 19 03:11:14 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2065         * bad.def, bld.c, bld.h, expr.c, lang-options.h, target.c,
2066         target.h, top.c, top.h (ffebld_constant_new_integerbinary,
2067         ffebld_constant_new_integerhex, ffebld_constant_new_integeroctal,
2068         ffeexpr_token_name_apos_name_, ffetarget_integerbinary,
2069         ffetarget_integerhex, ffetarget_integeroctal): Support
2070         new -fno-typeless-boz option with new functions, mods to
2071         existing octal-handling functions, new macros, new error
2072         messages, and so on.
2074         * com.c, lang-options.h, top.c, top.h (ffecom_notify_primary_entry):
2075         Print program unit name on stderr if -fno-silent (new option).
2077         * lang-options.h, top.c, top.h, stt.c (ffestt_dimlist_as_expr):
2078         Treat ([...,]1) in dimlist as ([...,]*) if -fugly-assumed
2079         (new option).
2081         * lang-options.h: Comment out options duplicated in gcc/toplev.c,
2082         because, somehow, having them commented in and building on my
2083         DEC Alpha results in a cc1 that always segfaults, and gdb that
2084         also segfaults whenever it debugs it up to init_lex() calling
2085         xmalloc() or so.
2087 Thu Oct 17 00:39:27 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2089         * stb.c (ffestb_R10013_): Don't change meaning of .sign until
2090         after previous meaning/value used to set sign of value
2091         (960507-1.f).
2093 Sun Oct 13 22:15:23 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2095         * top.c (ffe_decode_option): Don't set back-end flags
2096         that are nonexistent prior to gcc 2.7.0.
2098 Sun Oct 13 12:48:45 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2100         * com.c (convert): Don't convert emulated complex expr to
2101         real (via REALPART_EXPR) if the target type is (emulated)
2102         complex.
2104 Wed Oct  2 21:57:12 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2106         * com.c (ffecom_debug_kludge_): Set DECL_IN_SYSTEM_HEADER so
2107         -Wunused doesn't complain about these manufactured decls.
2108         (ffecom_expr_): Ditto, for original (non-ASSIGN'ed) variable.
2109         (ffecom_transform_equiv_): Clear DECL_IGNORED_P for aggregate
2110         area so it shows up as a debug-accessible symbol.
2111         (pushdecl): Default for "invented" identifiers (a g77-specific
2112         concept for now) is that they are artificial, in system header,
2113         ignored for debugging purposes, used, and (for types) suppressed.
2114         This ought to be overkill.
2116 Fri Sep 27 23:13:07 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2118         * ste.c (ffeste_begin_iterdo_, ffeste_end_iterdo_): Support
2119         one-trip DO loops (F66-style).
2120         * lang-options.h, top.c, top.h (-fonetrip): New option.
2122 Thu Sep 26 00:18:40 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2124         * com.c (ffecom_debug_kludge_): New function.
2125         (ffecom_sym_transform_): Use new function for COMMON and EQUIVALENCE
2126         members.
2128         * lang-options.h, top.c, top.h (-fno-debug-kludge):
2129         New option.
2130   
2131 1996-09-24  Dave Love  <d.love@dl.ac.uk>
2133         * Make-lang.in (include/f2c.h):
2134         Remove dependencies on xmake_file and tmake_file.
2135         They expand inconsistently in 2.8 c.f. 2.7; $(GCC_PARTS) depends on
2136         them anyhow.
2138 1996-09-22  Dave Love  <d.love@dl.ac.uk>
2140         * config-lang.in: Add --enable-libu77 option handling.
2142         * Make-lang.in:
2143         Conditionally add --enable-libu77 when running runtime configure.
2144         Define LIBU77STAGESTUFF and use it in relevant rules.
2146 1996-08-21  Dave Love  <d.love@dl.ac.uk>
2148         * Make-lang.in (f77-runtime):
2149         `stmp-hdrs' should have been `stmp-headers'.
2151 1996-08-20  Dave Love  <d.love@dl.ac.uk>
2153         * Make-lang.in (f77-runtime):
2154         Depend on stmp-hdrs, not stmp-int-hdrs, since libF77
2155         needs float.h.
2157 Sat Jun 22 18:17:11 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2159         * com.c (ffecom_tree_divide_): Fix RECORD_TYPE case to
2160         look at type of first field, properly, to determine
2161         whether to call c_div or z_div.
2163 Tue Jun  4 04:27:18 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2165         * com.c (ffecom_build_complex_constant_): Explicitly specify
2166         TREE_PURPOSE.
2167         (ffecom_expr_): Fix thinko.
2168         (ffecom_2): For COMPLEX_EXPR, explicitly specify TREE_PURPOSE.
2170 Mon May 27 16:23:43 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2172         Changes to optionally avoid gcc's back-end complex support:
2173         * com.c (ffecom_stabilize_aggregate_): New function.
2174         (ffecom_convert_to_complex_): New function.
2175         (ffecom_make_complex_type_): New function.
2176         (ffecom_build_complex_constant_): New function.
2177         (ffecom_expr_): For opCONVERT of non-COMPLEX to COMPLEX,
2178         don't bother explicitly converting to the subtype first,
2179         because gcc does that anyway, and more code would have
2180         to be added to find the subtype for the emulated-complex
2181         case.
2182         (ffecom_f2c_make_type_): Use ffecom_make_complex_type_
2183         instead of make_node etc. to make a complex type.
2184         (ffecom_1, ffecom_2): Translate operations on COMPLEX operands
2185         to appropriate operations when emulating complex.
2186         (ffecom_constantunion): Use ffecom_build_complex_constant_
2187         instead of build_complex to build a complex constant.
2188         (ffecom_init_0): Change point at which types are laid out
2189         for improved consistency.
2190         Use ffecom_make_complex_type_ instead of make_node etc.
2191         to make a complex type.
2192         Always calculate storage sizes from TYPE_SIZE, never TYPE_PRECISION.
2193         (convert): Use e, not expr, since we've copied into that anyway.
2194         For RECORD_TYPE cases, do emulated-complex conversions.
2195         (ffecom_f2c_set_lio_code_): Always calculate storage sizes
2196         from TYPE_SIZE, never TYPE_PRECISION.
2197         (ffecom_tree_divide_): Allow RECORD_TYPE to also be handled
2198         by run-time library.
2199         (ffecom_expr_intrinsic_): Handle possible RECORD_TYPE as argument
2200         to AIMAG intrinsic.
2202         * top.h, top.c, lang-options.h: Support new -f(no-)emulate-complex option.
2204         * com.c (ffecom_sym_transform_): Clarify and fix typos in comments.
2206 Mon May 20 02:06:27 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2208         * target.h: Use new REAL_VALUE_UNTO_TARGET_* macros instead
2209         of REAL_VALUE_FROM_TARGET_DOUBLE and _SINGLE.
2210         Explicitly use long instead of HOST_WIDE_INT for emulation
2211         of ffetargetReal1 and ffetargetReal2.
2213 1996-05-20  Dave Love  <d.love@dl.ac.uk>
2215         * config-lang.in:
2216         Test for patch being applied with flag_move_all_movables in toplev.c.
2218         * install.texi (Patching GNU Fortran):
2219         Mention overriding X_CFLAGS rather than
2220         editing proj.h on SunOS4.
2222         * Make-lang.in (F77_FLAGS_TO_PASS):
2223         Add X_CFLAGS (convenient for SunOS4 kluge, in
2224         particular).
2225         (f77.{,mostly,dist}clean): Reorder things, in particular not to delete
2226         Makefiles too early.
2228         * g77.c (DEFAULT_SWITCH_TAKES_ARG): Define a la gcc.c in the
2229         current GCC snapshot.
2231 Tue May 14 00:24:07 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2233         Changes for DEC Alpha AXP support:
2234         * com.c (ffecom_init_0): REAL_ARITHMETIC means internal
2235         REAL/DOUBLE PRECISION might well have a different size
2236         than the compiled type, so don't crash if this is the
2237         case.
2238         * target.h: Use `int' for ffetargetInteger1,
2239         ffetargetLogical1, and magical tests.  Set _f format
2240         strings accordingly.
2242 Tue Apr 16 14:08:28 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2244         * top.c (ffe_decode_option): -Wall no longer implies
2245         -Wsurprising.
2247 Sat Apr 13 14:50:06 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2249         * com.c (ffecom_char_args_): If item is error_mark_node,
2250         set *length that way, too.
2252         * com.c (ffecom_expr_power_integer_): If either operand
2253         is error_mark_node, return that.
2255         * com.c (ffecom_intrinsic_len_): If item is error_mark_node,
2256         return that for length.
2258         * expr.c (ffeexpr_declare_unadorned_,
2259         ffeexpr_declare_parenthesized_): Instead of crashing
2260         on unexpected contexts, produce a diagnostic.
2262         * intrin.c (ffeintrin_check_), intrin.def (impSIGNAL):
2263         Allow procedure as second arg to SIGNAL intrinsic.
2265         * stu.c (ffestu_symter_end_transition_): New function.
2266         (ffestu_symter_exec_transition_): Return bool arg.
2267         Always transition symbol (don't inhibit when !whereNONE).
2268         (ffestu_sym_end_transition): If DUMMY/LOCAL arg has any
2269         opANY exprs in its dimlist, diagnose it so it doesn't
2270         make it through to later stages that try to deal with
2271         dimlist stuff.
2272         (ffestu_sym_exec_transition): If sym has any opANY exprs
2273         in its dimlist, diagnose it so it becomes opANY itself.
2275         * symbol.c (ffesymbol_error): If token arg is NULL,
2276         just ANY-ize the symbol -- don't produce diagnostic.
2278 Mon Apr  1 10:14:02 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2280         * Version 0.5.18 released.
2282 Mon Mar 25 20:52:24 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2284         * com.c (ffecom_expr_power_integer_): Don't generate code
2285         that compares COMPLEX (or, as it happens, REAL) via "LT_EXPR",
2286         since the back end crashes on that.  (This code would never
2287         be executed anyway, but the test that avoids it has now been
2288         translated to control whether the code gets generated at all.)
2289         Fixes 960323-3.f.
2291         * com.c (ffecom_type_localvar_): Handle variable-sized
2292         dimension bounds expressions here, so they get calculated
2293         and saved on procedure entry.  Fixes 960323-4.f.
2295         * com.c (ffecom_notify_init_symbol): Symbol has no init
2296         info at all if only zeros have been used to initialize it.
2297         Fixes 960324-0.f.
2299         * expr.c, expr.h (ffeexpr_type_combine): Renamed from
2300         ffeexpr_type_combine_ and now a public procedure; last arg now
2301         a token, instead of an internal structure used to extract a token.
2302         Now allows the outputs to be aliased with the inputs.
2303         Now allows a NULL token to mean "don't report error".
2304         (ffeexpr_reduced_bool2_, ffeexpr_reduced_eqop2_,
2305         ffeexpr_reduced_math2_, ffeexpr_reduced_power_,
2306         ffeexpr_reduced_relop2_): Handle new calling sequence for
2307         ffeexpr_type_combine.
2308         * (ffeexpr_convert): Don't put an opCONVERT node
2309         in just because the size is unknown; all downstream code
2310         should be able to deal without it being there anyway, and
2311         getting rid of it allows new intrinsic code to more easily
2312         combine types and such without generating bad code.
2313         * info.c, info.h (ffeinfo_kindtype_max): Rewrite to do
2314         proper comparison of size of types, not just comparison
2315         of their internal kind numbers (so I2.eq.I1 doesn't promote
2316         I1 to I2, rather the other way around).
2317         * intrin.c (ffeintrin_check_): Combine types of arguments
2318         in COL a la expression handling, for greater flexibility
2319         and permissiveness (though, someday, -fpedantic should
2320         report use of this kind of thing).
2321         Make sure Hollerith/typeless where CHARACTER expected is
2322         rejected.  This all fixes 960323-2.f.
2324         * ste.c (ffeste_begin_iterdo_): Fix some more type conversions
2325         so INTEGER*2-laden DO loops don't crash at compile time on
2326         certain machines.  Believed to fix 960323-1.f.
2328         * stu.c (ffestu_sym_end_transition): Certainly reject
2329         whereDUMMY not in any dummy list, whether stateUNCERTAIN
2330         or stateUNDERSTOOD.  Fixes 960323-0.f.
2332 Tue Mar 19 13:12:40 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2334         * data.c (ffedata_value): Fix crash on opANY, and simplify
2335         the code at the same time.
2337         * Make-lang.in (f77-runtime): Also depends on lib[FI]77/Makefile...
2338         (include/f2c.h...): ...which in turn depend on */Makefile.in.
2339         (f77.rebuilt): Rebuild runtime stuff too.
2341         * intrin.c (ffeintrin_check_): Accommodate TYPELESS/HOLLERITH
2342         types, convert args as necessary, etc.
2344         * expr.c (ffeexpr_convert): Fix test for TYPELESS/HOLLERITH
2345         to obey the docs; crash if no source token when error.
2346         (ffeexpr_collapse_convert): Crash if no token when error.
2348 Mon Mar 18 15:51:30 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2350         * com.c (ffecom_init_zero_): Renamed from
2351         ffecom_init_local_zero_; now handles top-level
2352         (COMMON) initializations too.
2354         * bld.c (ffebld_constant_is_zero):
2355         * com.c (ffecom_symbol_transform_, ffecom_sym_transform_assign_,
2356         ffecom_transform_common_, ffecom_transform_equiv_):
2357         * data.c:
2358         * equiv.c:
2359         * equiv.h:
2360         * lang-options.h:
2361         * stc.c:
2362         * storag.c:
2363         * storag.h:
2364         * symbol.c:
2365         * symbol.h:
2366         * target.c:
2367         * target.h:
2368         * top.c:
2369         * top.h: All of this is mostly housekeeping-type changes
2370         to support -f(no-)zeros, i.e. not always stuff zero
2371         values into the initializer fields of symbol/storage objects,
2372         but still track that they have been given initial values.
2374         * bad.def: Fix wording for DATA-related diagnostics.
2376         * com.c (ffecom_sym_transform_assign_): Don't check
2377         any EQUIVALENCE stuff for local ASSIGN, the check was
2378         bad (crashing), and it's not necessary, anyway.
2380         * com.c (ffecom_expr_intrinsic_): For MAX and MIN,
2381         ignore null arguments as far arg[123], and fix handling
2382         of ANY arguments.  (New intrinsic support now allows
2383         spurious trailing null arguments.)
2385         * com.c (ffecom_init_0): Add HOLLERITH (unsigned)
2386         equivalents for INTEGER*2, *4, and *8, so shift intrinsics
2387         and other things that need unsigned versions of signed
2388         types work.
2390 Sat Mar 16 12:11:40 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2392         * storag.c (ffestorag_exec_layout): Treat adjustable
2393         local array like dummy -- don't create storage object.
2394         * com.c (ffecom_sym_transform_): Allow for NULL storage
2395         object in LOCAL case (adjustable array).
2397 Fri Mar 15 13:09:41 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2399         * com.c (ffecom_sym_transform_): Allow local symbols
2400         with nonconstant sizes (adjustable local arrays).
2401         (ffecom_type_localvar_): Allow dimensions with nonconstant
2402         component (adjustable local arrays).
2403         * expr.c: Various minor changes to handle adjustable
2404         local arrays (a new case of stateUNCERTAIN).
2405         * stu.c (ffestu_sym_end_transition,
2406         ffestu_sym_exec_transition): Ditto.
2407         * symbol.def: Update docs to reflect these changes.
2409         * com.c (ffecom_expr_): Reduce space/time needed for
2410         opACCTER case by handling it here instead of converting
2411         it to opARRTER earlier on.
2412         (ffecom_notify_init_storage): Don't convert ACCTER to ARRTER.
2413         (ffecom_notify_init_symbol): Ditto.
2415         * com.c (ffecom_init_0): Crash and burn if any of the types'
2416         sizes, according to the GBE, disagrees with the sizes of
2417         the FFE's internal implementation.  This might catch
2418         Alpha/SGI bugs earlier.
2420 Fri Mar 15 01:09:41 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2422         * com-rt.def, com.c, com.h: Changes for rewrite of intrinsic
2423         handling.
2424         * com.c (ffecom_arglist_expr_): New function.
2425         (ffecom_widest_expr_type_): New function.
2426         (ffecom_expr_intrinsic_): Reorganize, some rewriting.
2427         (ffecom_f2c_make_type_): Layout complex types.
2428         (ffecom_gfrt_args_): New function.
2429         (ffecom_list_expr): Trivial change for consistency.
2431         * expr.c (ffeexpr_token_name_rhs_): Go back to getting
2432         type from specific, not implementation, info.
2433         (ffeexpr_token_funsubstr_): Set intrinsic implementation too!
2434         * intrin.c: Major rewrite of most portions.
2435         * intrin.def: Major rearchitecting of tables.
2436         * intrin.h (ffeintrin_basictype, ffeintrin_kindtype):
2437         Now (once again) take ffeintrinSpec as arg, not ffeintrinImp;
2438         for now, these return NONE, since they're not really needed
2439         and adding the necessary info to the tables is not trivial.
2440         (ffeintrin_codegen_imp): New function.
2441         * stc.c (ffestc_R1208_item): Change way ffeintrin funcs called,
2442         back to original per above; but comment out the code anyway.
2444         * intrin.c (ffe_init_0): Do internal checks only if
2445         -fset-g77-defaults not specified.
2447         * lang-options.h: Add -fset-g77-defaults option.
2448         * lang-specs.h: Always pass -fset-g77-defaults.
2449         * top.c, top.h: New option.
2451 Sat Mar  9 17:49:50 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2453         * Make-lang.in (stmp-int-hdrs): Use --no-validate when
2454         generating the f77.rebuilt files (BUGS, INSTALL, NEWS)
2455         so cross-references can work properly in g77.info
2456         without a lot of hassle.  Users can probably deal with
2457         the way they end up looking in the f77.rebuilt files.
2459         * bld.c (ffebld_constant_new_integer4_val): INTEGER*8
2460         support -- new function.
2461         (ffebld_constant_new_logical4_val): New function.
2462         * com.c (ffecom_f2c_longint_type_node): New type.
2463         (FFECOM_rttypeLONGINT_): New return type code.
2464         (ffecom_expr_): Add code to invoke pow_qq instead
2465         of pow_ii for INTEGER4 (INTEGER*8) case.
2466         If ffecom_expr_power_integer_ returns NULL_TREE, just do
2467         the usual work.
2468         (ffecom_make_gfrt_): Handle new type.
2469         (ffecom_expr_power_integer_): Let caller do the work if in
2470         dummy-transforming case, since
2471         caller now knows about INTEGER*8 and such, by returning
2472         NULL_TREE.
2473         * expr.c (ffeexpr_reduced_power_): Complain about non-INTEGER
2474         raised to INTEGER4 (INTEGER*8) power.
2476         * target.c (ffetarget_power_integerdefault_integerdefault):
2477         Fix any**negative.
2478         * com.c (ffecom_expr_power_integer_): Fix (-1)**(-8) and similar
2479         to ABS() the integral result if the exponent is negative
2480         and even.
2482         * ste.c (ffeste_begin_iterdo_): Clean up a type ref.
2483         Always convert iteration count to _default_ INTEGER.
2485         * sta.c (ffesta_second_): Add BYTE and WORD type/stmts;
2486         changes by Scott Snyder <snyder@d0sgif.fnal.gov>.
2487         * stb.c (ffestb_decl_recursive): Ditto.
2488         (ffestb_decl_recursive): Ditto.
2489         (ffestb_decl_entsp_2_): Ditto.
2490         (ffestb_decl_entsp_3_): Ditto.
2491         (ffestb_decl_funcname_2_): Ditto.
2492         (ffestb_decl_R539): Ditto.
2493         (ffestb_decl_R5395_): Ditto.
2494         * stc.c (ffestc_establish_declstmt_): Ditto.
2495         * std.c (ffestd_R539item): Ditto.
2496         (ffestd_R1219): Ditto.
2497         * stp.h: Ditto.
2498         * str-1t.fin: Ditto.
2499         * str-2t.fin: Ditto.
2501         * expr.c (ffeexpr_finished_): For DO loops, allow
2502         any INTEGER type; convert LOGICAL (assuming -fugly)
2503         to corresponding INTEGER type instead of always default
2504         INTEGER; let later phases do conversion of DO start,
2505         end, incr vars for implied-DO; change checks for non-integral
2506         DO vars to be -Wsurprising warnings.
2507         * ste.c (ffeste_io_impdo_): Convert start, end, and incr
2508         to type of DO variable.
2510         * com.c (ffecom_init_0): Add new types for [IL][234],
2511         much of which was done by Scott Snyder <snyder@d0sgif.fnal.gov>.
2512         * target.c: Ditto.
2513         * target.h: Ditto.
2515 Wed Mar  6 14:08:45 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2517         * top.c (ffe_init_gbe_): Make -frerun-loop-opt the default.
2519 Mon Mar  4 12:27:00 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2521         * expr.c (ffeexpr_exprstack_push_unary_): Really warn only
2522         about two successive _arithmetic_ operators.
2524         * stc.c (ffestc_R522item_object): Allow SAVE of (understood)
2525         local entity.
2527         * top.c (ffe_decode_option): New -f(no-)second-underscore options.
2528         * top.h: New options.
2529         * com.c (ffecom_get_external_identifier_, ffecom_get_identifier_):
2530         New options.
2532         * Make-lang.in (f77.maintainer-clean): Clean f/BUGS, f/INSTALL,
2533         f/NEWS.
2534         ($(srcdir)/f/BUGS, $(srcdir)/f/INSTALL, $(srcdir)/f/NEWS):
2535         New rules.
2536         ($(srcdir)/f/g77.info, $(srcdir)/f/g77.dvi): Depend on
2537         f/bugs.texi and f/news.texi.
2538         (f77.install-man): Install f77 man pages (if enabled).
2539         (f77.uninstall): Uninstall info docs, f77 man pages (if enabled).
2541         * top.c (ffe_init_gbe_): New function.
2542         (ffe_decode_option, ffe_file): Call ffe_init_gbe_ to
2543         set defaults for gcc options.
2545 Sat Jan 20 13:57:19 1996  Craig Burley  <burley@gnu.ai.mit.edu>
2547         * com.c (ffecom_get_identifier_): Eliminate needless
2548         comparison of results of strchr.
2550 Tue Dec 26 11:41:56 1995  Craig Burley  <burley@gnu.ai.mit.edu>
2552         * Make-lang.in: Add rules for new files g77.texi, g77.info,
2553         and g77.dvi.
2554         Reorganize the *clean rules to more closely parallel gcc's.
2556         * config-lang.in: Exclude g77.info from diffs.
2558 Sun Dec 10 02:29:13 1995  Craig Burley  <burley@gnu.ai.mit.edu>
2560         * expr.c (ffeexpr_declare_unadorned_,
2561         ffeexpr_declare_parenthesized_): Break out handling of
2562         contextDATAIMPDO[INDEX,CTRL] so it's independent of symbol state.
2563         Don't exec-transition these here (let ffeexpr_sym_impdoitem_
2564         handle that when appropriate).  Don't "declare" them twice.
2566 Tue Dec  5 06:48:26 1995  Craig Burley  <burley@gnu.ai.mit.edu>
2568         * stc.c (ffestc_promote_sfdummy_): Allow whereNONE parent
2569         symbol, since it is not necessarily known whether it will
2570         become LOCAL or DUMMY.
2572 Mon Dec  4 03:46:55 1995  Craig Burley  <burley@gnu.ai.mit.edu>
2574         * lex.c (ffelex_display_token, ffelex_type_string_): Resurrect
2575         these from their old versions and update them for possible invocation
2576         from debugger.
2577         * lex.h (ffelex_display_token): Declare this in case anyone
2578         else wants to call it.
2580         * lex.c (ffelex_total_tokens_): Have this reflect actual allocated
2581         tokens, no longer include outstanding "uses" of tokens.
2583         * malloc.c, malloc.h (MALLOC_DEBUG): New macro to control
2584         checking of whether callers follow rules, now defaults to 0
2585         for "no checking" to improve compile times.
2587         * malloc.c (malloc_pool_kill): Fix bug that could prevent
2588         subpool from actually being killed (wasn't setting its use
2589         count to 1).
2591         * proj.h, *.c (dmpout): Replace all occurrences of `stdout'
2592         and some of `stderr' with `dmpout', so where to dump debugging
2593         output can be easily controlled during build; add default
2594         for `dmpout' of `stderr' to proj.h.
2596 Sun Dec  3 00:56:29 1995  Craig Burley  <burley@gnu.ai.mit.edu>
2598         * com.c (ffecom_return_expr): Eliminate attempt at warning
2599         about unset return values, since the back end does this better,
2600         with better wording, and is not triggered by clearly working
2601         (but spaghetti) code as easily as this test.
2603 Sat Dec  2 08:28:56 1995  Craig Burley  <burley@gnu.ai.mit.edu>
2605         * target.c (ffetarget_power_*_integerdefault): Raising 0 to
2606         integer constant power should not be an error condition;
2607         if so, other code should catch 0 to any power, etc.
2609         * bad.def (FFEBAD_BAD_POWER): 0**integer now a warning instead
2610         of an error.
2612 Fri Dec  1 00:12:03 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2614         * bad.def: Clarify diagnostic regarding complex constant elements.
2615         * expr.c (ffeexpr_cb_comma_c_): Capitalize real/imaginary
2616         for clarified diagnostic.
2618         * com.c (ffecom_close_include_): Close the file!
2620         * lex.c (ffelex_file_fixed): Update line info if the line
2621         has any content, not just if it finishes a previous line
2622         or has a label.
2623         (ffelex_file_free): Clarify switch statement code.
2625 Sat Nov 18 19:37:22 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2627         * Version 0.5.17 released.
2629 Fri Nov 17 14:27:24 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2631         * Make-lang.in: Fix typo in comment.
2633         * Makefile.in (f/fini.o, f/proj-h.o): Don't use `$<' since
2634         not all makes support it (e.g. NeXT make), use explicit
2635         source name instead (with $(srcdir) and munging).
2636         (ASSERT_H): assert.h lives in source dir, not build dir.
2638 Thu Nov 16 12:47:50 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2640         * com.c (ffecom_init_0): Fix dumb bug in code to produce
2641         warning message about non-32-bit-systems.
2643         * stc.c (ffestc_R501_item): Parenthesize test to make
2644         warning go away (and perhaps fix bug).
2646 Thu Nov 16 03:43:33 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2648         * g77.c: Upgrade to 2.7.0's gcc.c.
2649         Fix -v to pass a temp name instead of "/dev/null" for "-o".
2651 Fri Nov 10 19:16:05 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2653         * ste.c (ffeste_begin_iterdo_): Add Toon's change to
2654         make loops faster on some machines (implement termination
2655         condition as "--i >= 0" instead of "i-- > 0").
2657 Thu Nov  2 03:58:17 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2659         * Make-lang.in: Remove unnecessary $(exeext) a la cp/Make-lang.in.
2661         * com.c (ffecom_expr_): Restore old strategy for assignp variant
2662         of opSYMTER case...always return the ASSIGN version of var.
2663         That way, `-O -Wuninitialized' will catch "I=3;GOTO I;END"
2664         (though the diagnostic will refer to `__g77_ASSIGN_i').
2666         * com.c (ffecom_expr_power_integer_): For constant rhs case,
2667         wrap every new eval of lhs in save_expr() so it is clear to
2668         back end that MULT_EXPR(lhs,lhs) has identical operands,
2669         otherwise for an rhs like 32767 it generates around 65K pseudo
2670         registers, with which stupid_life_analysis cannot cope
2671         (due to reg_renumber in regs.h being `short *' instead of
2672         `int *').
2674         * com.c (ffecom_expr_): Speed up implementation of LOGICAL
2675         versions of opNOT, opAND, opOR, opXOR/opNEQV, and opEQV by
2676         assuming the values actually are kosher LOGICAL bit patterns.
2677         Also simplify code that implements some of the INTEGER versions
2678         of these.
2680         * com.c (skip_redundant_dir_prefix, read_name_map,
2681         ffecom_open_include_, signed_type, unsigned_type): Fold in
2682         changes to cccp.c made from 2.7.0 through ss-950826.
2684         * equiv.c (ffeequiv_layout_local_): Kill the equiv list
2685         if no syms in list.
2687         * expr.c (ffeexpr_reduced_eqop2_): Issue specific diagnostic
2688         regarding usage of .EQV./.NEQV. in preference to .EQ./.NE..
2690         * intrin.c: Add ERF and ERFC as generic intrinsics.
2691         intrin.def: Same.
2693         * sta.c (ffesta_save_, ffesta_second_): Whoever calls
2694         ffestd_exec_begin must also set ffesta_seen_first_exec = TRUE,
2695         and anytime stc sees an exec transition, it must do both.
2696         stc.c (ffestc_eof): Same.
2698         * stc.c (ffestc_promote_sfdummy_): If failed implicit typing
2699         or CHARACTER*(*) arg, after calling ffesymbol_error, don't
2700         reset info to ENTITY/DUMMY, because ffecom_sym_transform_
2701         doesn't expect such a thing with ANY/ANY type.
2703         * target.h (*logical*): Change some of these so they parallel
2704         changes in com.c, e.g. for _eqv_, use (l)==(r) instead of
2705         !!(l)==!!(r), to get a more faithful result.
2707 Fri Oct 27 07:06:59 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2709         * com.c (ffecom_sym_transform_): Simplify code for local
2710         EQUIVALENCE case.
2712         * expr.c (ffeexpr_exprstack_push_unary_): Warn about two
2713         successive operators.
2714         (ffeexpr_exprstack_push_binary_): Warn about "surprising"
2715         operator precedence, as in "-2**2".
2717         * lang-options.h: Add -W(no-)surprising options.
2719         * parse.c (yyparse): Don't reset -fpedantic if not -pedantic.
2721         * top.c (ffe_decode_option): Support new -Wsurprising option.
2722         * top.h: Ditto.
2724 Mon Oct 23 09:14:15 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2726         * com.c (ffecom_finish_symbol_transform_): Don't transform
2727         NONE/NONE (CHARACTER*(*)) vars, as these don't mean anything
2728         in debugging terms, and can't be turned into anything
2729         in the back end (so ffecom_sym_transform_ crashes on them).
2731         * com.c (ffecom_expr_): Change strategy for assignp variant
2732         of opSYMTER case...always return the original var unless
2733         it is not wide enough.
2735         * ste.c (ffeste_io_cilist_): Clarify diagnostic for ASSIGN
2736         involving too-narrow variable.  This shouldn't happen, though.
2737         (ffeste_io_icilist_): Ditto.
2738         (ffeste_R838): Ditto.
2739         (ffeste_R839): Ditto.
2741 Thu Oct 19 03:21:20 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2743         * com.c (ffecom_sym_transform_assign_): Set TREE_STATIC
2744         using the same decision-making process as used for their twin
2745         variables, so ASSIGN can last across RETURN/CALL as appropriate.
2747 Fri Sep 22 20:21:18 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2749         * Makefile.in: fini is a host program, so it needs a host-compiled
2750         version of proj.o, named proj-h.o.  f/fini, f/fini.o, and
2751         f/proj-h.o targets updated accordingly.
2753         * com.c (__eprintf): New function.
2755 Wed Sep 20 02:26:36 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2757         * lang-options.h: Add omitted -funix-intrinsics-* options.
2759         * malloc.c (malloc_find_inpool_): Check for infinite
2760         loop, crash if detected (user reports encountering
2761         them in some large programs, this might help track
2762         down the bugs).
2764 Thu Sep  7 13:00:32 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2766         * com.c (lang_print_error_function): Don't dereference null
2767         pointer when outside any program unit.
2768         (ffecom_let_char_, ffecom_arg_ptr_to_expr): If catlist
2769         item or length ever error_mark_node, don't continue processing,
2770         since back-end functions like build_pointer_type crash on
2771         error_mark_node's (due to pushing bad obstacks, etc.).
2773 Wed Aug 30 15:58:35 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2775         * Version 0.5.16 released.
2777 Mon Aug 28 12:24:20 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2779         * bad.c (ffebad_finish): Fix botched message when no places
2780         are printed (due to unknown line info, etc.).
2782         * std.c (ffestd_subr_labels_): Do a better job finding
2783         line info in the case of typeANY and diagnostics.
2785 Fri Aug 25 15:19:29 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2787         * com.c (DECL_ARTIFICIAL): Surround all references to this
2788         macro with #if !BUILT_FOR_270 and #endif.
2789         (init_lex): Surround print_error_function decl with
2790         #if !BUILT_FOR_270 and #endif.
2791         (lang_init): Call new ffelex_hash_kludge function to solve
2792         problem with preprocessed files that have INCLUDE statements.
2794         * lex.c (ffelex_getc_): New function.
2795         (ffelex_cfelex_): Use ffelex_getc_ instead of getc in any
2796         paths of code that can be affected by ffelex_hash_kludge.
2797         Don't make an EOF token for unrecognized token; set token
2798         to NULL instead, to avoid problems when not initialized.
2799         (ffelex_hash_): Use ffelex_getc_ instead of getc in any
2800         paths of code that can be affected by ffelex_hash_kludge.
2801         Test token returned by ffelex_cfelex_ for NULL, meaning
2802         unrecognized token.
2803         Get rid of useless used_up variable.
2804         Don't do ffewhere stuff or kill any tokens if in
2805         ffelex_hash_kludge.
2806         (ffelex_file_fixed, ffelex_file_free): Use ffelex_getc_
2807         instead of getc in any paths of code that can be affected
2808         by ffelex_hash_kludge.
2809         (ffelex_hash_kludge): New function.
2811         * lex.h (ffelex_hash_kludge): New function.
2813 Wed Aug 23 15:17:40 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2815         * com.c: Implement -f(no-)underscoring options by always
2816         compiling in code to do it, and having that code inhibit
2817         itself when -fno-underscoring is in effect.  This option
2818         overrides -f(no-)f2c for this purpose; -f(no-)f2c returns
2819         to it's <=0.5.15 behavior of affecting only how code
2820         is generated, not how/whether names are mangled.
2822         * target.h: Redo specification of appending underscores so
2823         the macros are named "_default" instead of "_is" and the
2824         two-underscore macro defaults to 1.
2826         * top.c, top.h (underscoring): Add appropriate stuff
2827         for the -f(no-)underscoring options.
2829 Tue Aug 22 10:25:01 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2831         * bad.c (ffebad_finish): Call report_error_function (in toplev.c)
2832         to better identify location of problem.
2833         Say "(continued):" instead of "(continued:)" for consistency.
2835         * com.c (ffecom_gen_sfuncdef_): Set and reset new
2836         ffecom_nested_entry_ variable to hold ffesymbol being compiled.
2837         (lang_print_error_function): New function from toplev.c.
2838         Use ffecom_nested_entry_ to help determine which name
2839         and kind-string to print.
2840         (ffecom_expr_intrinsic_): Handle EXIT and FLUSH invocations
2841         with different calling sequences than library functions.
2842         Have SIGNAL and SYSTEM push and pop calltemps, and convert
2843         their return values to the destination type (just in case).
2844         (FFECOM_rttypeINT_): New return type for `int', in case
2845         gcc/f/runtime/libF77/system_.c(system_) is really supposed
2846         to return `int' instead of `ftnint'.
2848         * com.h (report_error_function): Declare this.
2850         * equiv.c (ffeequiv_layout_local_): Don't forget to consider
2851         root variable itself as possible "first rooted variable",
2852         else might never set symbol and then crash later.
2854         * intrin.c (ffeintrin_check_exit_): Change to allow no args
2855         and rename to ffeintrin_check_int_1_o_ for `optional'.
2856         #define ffeintrin_check_exit_ and _flush_ to this new
2857         function, so intrin.def can refer to the appropriate names.
2859         * intrin.def (FFEINTRIN_impFLUSH): Validate using
2860         ffeintrin_check_flush_ so passing an INTEGER arg is allowed.
2862         * lex.c (ffelex_file_push_, ffelex_file_pop_): New functions
2863         to manage input_file_stack in gbe.
2864         (ffelex_hash_): Call new functions (instead of doing code).
2865         (ffelex_include_): Call new functions to update stack for
2866         INCLUDE (_hash_ handles cpp output of #include).
2868 Mon Aug 21 08:09:04 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2870         * Makefile.in: Put `-W' in front of every `-Wall', since
2871         2.7.0 requires that to engage `-Wunused' for parameters.
2873         * com.c: Mark all parameters as artificial, so
2874         `-W -Wunused' doesn't complain about unused ones (since
2875         there's no way right not to individually specify attributes
2876         like `unused').
2878         * proj.h: Don't #define UNUSED if already defined, regardless
2879         of host compiler.
2881 Sun Aug 20 16:03:56 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2883         * gbe/2.7.0.diff: Regenerate.
2885         * lang-options.h, lang-specs.h: If not __STDC__ (ANSI C),
2886         avoid doing anything, especially the stringizing in -specs.h.
2888 Thu Aug 17 03:36:12 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2890         * lang-specs.h: Remove useless optional settings of -traditional,
2891         since -traditional is always set anyway.
2893 Wed Aug 16 16:56:46 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2895         * Make-lang.in (F2C_INSTALL_FLAG, F2CLIBOK): More
2896         control over whether to install f2c-related stuff.
2897         (install-f2c-*): New targets to install f2c-related
2898         stuff in system, not just gcc, directories.
2900         * com.c: Change calls to ffecom_get_invented_identifier
2901         to use generally more predictable names.
2902         Change calls to build_range_type to ensure consistency
2903         of types of operands.
2904         (ffecom_get_external_identifier_): Change to accept
2905         symbol info, not just text, so it can use f2c flag for
2906         symbol to decide whether to append underscore(s).
2907         (ffecom_get_identifier_): Don't change names if f2c flag
2908         off for compilation.
2909         (ffecom_type_permanent_copy_): Use same type for new max as
2910         used for min.
2911         (ffecom_notify_init_storage): Offline fixups for stand-alone.
2913         * data.c (ffedata_gather): Explicitly test for common block,
2914         since it's no longer always the case that a local EQUIVALENCE
2915         group has no symbol ptr (it now can, if a user-predictable
2916         "rooted" symbol has been identified).
2918         * equiv.c: Add some debugging stuff.
2919         (ffeequiv_layout_local_): Set symbol ptr with user-predictable
2920         "rooted" symbol, for giving the invented aggregate a
2921         predictable name.
2923         * g77.c (append_arg): Allow for 20 extra args instead of 10.
2924         (main): For version-only case, add `-fnull-version' and, unless
2925         explicitly omitted, `-lf2c -lm'.
2927         * lang-options.h: New "-fnull-version" option.
2929         * lang-specs.h: Support ".fpp" suffix for preprocessed source
2930         (useful for OS/2, MS-DOS, other case-insensitive systems).
2932         * stc.c (ffestc_R544_equiv_): Swap way lists are merged so this
2933         is consistent with the order in which lists are built, making
2934         user predictability of invented aggregate name much higher.
2936         * storag.c, storag.h (FFESTORAG_typeDUMMY): Delete this enum.
2938         * top.c: Accept, but otherwise ignore, `-fnull-version'.
2940 Tue Aug 15 07:01:07 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2942         * DOC, INSTALL, PROJECTS: Extensive improvements to documentation.
2944 Sun Aug 13 01:55:18 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2946         * INSTALL (f77-install-ok): Document the use of this file.
2948         * Make-lang.in (F77_INSTALL_FLAG): New flag to control
2949         whether to install an `f77' command (based on whether
2950         a file named `f77-install-ok' exists in the source or
2951         build directory) to replace the broken attempt to use
2952         comment lines to avoid installing `f77' (broken in the
2953         sense that it prevented installation of `g77').
2955 Mon Aug  7 06:14:26 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2957         * DOC: Add new sections for g77 & gcc compiler options,
2958         source code form, and types, sizes and precisions.
2959         Remove lots of old "delta-version" info, or at least
2960         summarize it.
2962         * INSTALL: Add info here that used to be in DOC.
2963         Other changes.
2965         * g77.c (lookup_option, main): Check for --print-* options,
2966         so we avoid adding version-determining stuff.
2968 Wed Jul 26 15:51:03 1995  Craig Burley  (burley@gnu.ai.mit.edu)
2970         * Make-lang.in, Makefile.in (input.j, INPUT_H): New file.
2971         Update dependencies accordingly.
2973         * bad.c (ffebad_here): Okay to use unknown line/col.
2975         * compilers.h (@f77-cpp-input): Remove -P option now that
2976         # directives are handled by f771.  Update other options
2977         to be more consistent with @c in gcc/gcc.c.  Don't run f771
2978         if -E specified, etc., a la @c.
2979         (@f77): Don't run f771 if -E specified, etc., a la @c.
2981         * config-lang.in: Avoid use of word "guaranteed".
2983         * input.j: New file to wrap around gcc/input.h.
2985         * lex.j: Add support for parsing # directives output by cpp.
2986         (ffelex_cfebackslash_): New function.
2987         (ffelex_cfelex_): New function.
2988         (ffelex_get_directive_line_): New function.
2989         (ffelex_hash_): New function.
2990         (ffelex_include_): Change to not use ffewhere_file_(begin|end).
2991         Also fix bug in pointing to next line (for diagnostics, &c)
2992         following successful INCLUDE.
2993         (ffelex_next_line_): New function that does chunk of code
2994         seen in several places elsewhere in the lexers.
2995         (ffelex_file_fixed): Delay finishing statement until source
2996         line is registered with ffewhere, so INCLUDE processing
2997         picks up the info correctly.
2998         Okay to kill or use unknown line/col objects now.
2999         Handle HASH (#) lines.
3000         Reorder tests for insubstantial lines to put most frequent
3001         occurrences at top, for possible minor speedup.
3002         Some general consolidation of code.
3003         (ffelex_file_free): Handle HASH (#) lines.
3004         Okay to kill or use unknown line/col objects now.
3005         Some general consolidation of code.
3006         (ffelex_init_1): Detect HASH (#) lines.
3007         (ffelex_set_expecting_hollerith): Okay to kill or use unknown
3008         line/col objects now.
3010         * lex.h (FFELEX_typeHASH): New enum.
3012         * options-lang.h (-fident, -fno-ident): New options.
3014         * stw.c (ffestw_update): Okay to kill unknown line/col objects
3015         now.
3017         * target.h (FFETARGET_okREALQUAD, FFETARGET_okCOMPLEXDOUBLE,
3018         FFETARGET_okCOMPLEXQUAD): #define these appropriately.
3020         * top.c: Include flag.j wrapper, not flags.h directly.
3021         (ffe_is_ident_): New flag.
3022         (ffe_decode_option): Handle -fident and -fno-ident.
3023         (ffe_file): Replace obsolete ffewhere_file_(begin|end) with
3024         ffewhere_file_set.
3026         * top.h (ffe_is_ident_, ffe_is_ident, ffe_set_is_ident):
3027         New flag and access functions.
3029         * where.c, where.h: Remove all tracking of parent file.
3030         (ffewhere_file_begin, ffewhere_file_end): Delete these.
3031         (ffewhere_line_use): Make it work with unknown line object.
3033 Mon Jul 17 03:04:09 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3035         * com.c (ffecom_sym_transform_): Set DECL_IN_SYSTEM_HEADER
3036         flag for any local vars used as stmtfunc dummies or DATA
3037         implied-DO iter vars, so no -Wunused warnings are produced
3038         for them (a la f2c).
3039         (ffecom_init_0): Do "extern int xargc;" for IARGC() intrinsic.
3040         Warn if target machine not 32 bits, since g77 isn't yet
3041         working on them at all well.
3043         * expr.c (ffeexpr_sym_lhs_call_, ffeexpr_sym_lhs_data_,
3044         ffeexpr_sym_lhs_extfunc_, ffeexpr_sym_rhs_actualarg_,
3045         ffeexpr_sym_rhs_let_, ffeexpr_paren_rhs_let_): Don't
3046         gratuitously set attr bits that don't apply just
3047         to avoid null set meaning error; instead, use explicit
3048         error flag, and allow null attr set, to
3049         fix certain bugs discovered by looking at this code.
3051         * g77.c: Major changes to improve support for gcc long options,
3052         to make `g77 -v' report more useful info, and so on.
3054 Mon Jul  3 14:49:16 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3056         * DOC, com.c, intrin.h, intrin.c, intrin.def, target.h, top.c,
3057         top.h: Add new `unix' group of intrinsics, which includes the
3058         newly added ERF, ERFC, EXIT, plus even newer ABORT, DERF, DERFC,
3059         FLUSH, GETARG, GETENV, SIGNAL, and SYSTEM.
3061 Tue Jun 27 23:01:05 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3063         * bld.c, bld.h (ffebld_constant_pool,
3064         ffebld_constant_character_pool): Use a single macro (the
3065         former) to access the pool for allocating constants, instead
3066         of latter in public and FFEBLD_CONSTANT_POOL_ internally
3067         in bld.c (which was the only one that was correct before
3068         these changes).  Add verification of integrity of certain
3069         heap-allocated areas.
3071         * com.c (ffecom_overlap_, ffecom_args_overlap_,
3072         ffecom_tree_canonize_ptr_, ffecom_tree_canonize_ref_): New
3073         functions to optimize calling COMPLEX and, someday, CHARACTER
3074         functions requiring additional argument to be passed.
3075         (ffecom_call_, ffecom_call_binop_, ffecom_expr_,
3076         ffecom_expr_intrinsic_): Change calling
3077         sequences to include more info on possible destination.
3078         (ffecom_expr_intrinsic_): Add ERF(), ERFC(), and EXIT()
3079         intrinsic code.
3080         (ffecom_sym_transform_): For assumed-size arrays, set high
3081         bound to highest possible value instead of low bound, to
3082         improve validity of overlap checking.
3083         (duplicate_decls): If olddecl and newdecl are the same,
3084         don't do any munging, just return affirmative.
3086         * expr.c: Change ffecom_constant_character_pool() to
3087         ffecom_constant_pool().
3089         * info.c (ffeinfo_new): Compile this version if not being
3090         compiled by GNU C.
3092         * info.h (ffeinfo_new): Don't define macro if not being
3093         compiled by GNU C.
3095         * intrin.c, intrin.def: Add ERF(), ERFC(), and EXIT() intrinsics.
3096         (ffeintrin_check_exit_): New for EXIT() subroutine intrinsic.
3098         * malloc.c, malloc.h (malloc_verify_*): New functions to verify
3099         integrity of heap-storage areas.
3101         * stc.c (ffestc_R834, ffestc_R835): Handle possibility that
3102         an enclosing DO won't have a construct name even when the
3103         CYCLE/EXIT does (i.e. without dereferencing NULL).
3105         * target.c, target.h (ffetarget_verify_character1): New function
3106         to verify integrity of heap storage used to hold character constant.
3108 Thu Jun 22 15:36:39 1995  Howard Gordon  (flash@super.org)
3110         * stp.h (ffestpVxtcodeIx): Fix typo in typedef for this.
3112 Mon May 29 15:22:31 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3114         * *: Make all sorts of changes to accommodate upcoming gcc-2.7.0.
3115         I didn't keep track of them, nor just when I made them, nor
3116         when I (much later, probably in early August 1995) modified
3117         them so they could properly handle both 2.7.0 and 2.6.x.
3119         * com.c (ffecom_expr_power_integer_): Don't expand_start_stmt_expr
3120         if transforming dummy args, because the back end cannot handle
3121         that (it's rejected by the gcc front end), just generate
3122         call to run-time library.
3123         Back out changes in 0.5.15 because more temporaries might be
3124         needed anyway (for COMPLEX**INTEGER).
3125         (ffecom_push_tempvar): Remove inhibitor.
3126         Around start_decl and finish_decl (in particular, arround
3127         expand_decl, which is called by them), push NULL_TREE into
3128         sequence_rtl_expr, an external published by gcc/function.c.
3129         This makes sure the temporary is truly in the function's
3130         context, not the inner context of a statement-valued expression.
3131         (I think the back end is inconsistent here, but am not
3132         interested in convincing the gbe maintainers about this now.)
3133         (pushdecl): Make sure that when pushing PARM_DECLs, nothing
3134         other than them are pushed, as happened for 0.5.15 and which,
3135         if done for other reasons not fixed here, might well indicate
3136         some other problem -- so crash if it happens.
3138         * equiv.c (ffeequiv_layout_local_): If the local equiv group
3139         has a non-nil COMMON field, it should mean that an error has
3140         occurred and been reported, so just trash the local equiv
3141         group and do nothing.
3143         * stc.c (ffestc_promote_sfdummy_): Set sfdummy arg state to
3144         UNDERSTOOD so above checking for duplicate args actually
3145         works, and so we don't crash later in pushdecl.
3147         * ste.c (ffeste_R1001): Set initial value only for VAR_DECLs,
3148         not for, e.g., LABEL_DECLs, which the FORMAT label can be
3149         if it was previously treated as an executable label.
3151 Sat May 20 01:53:53 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3153         * com.c (ffecom_sym_transform_): For adjustable arrays,
3154         pass high bound through variable_size in case its primaries
3155         are changed (dumb0.f, and this might also improve
3156         performance so it approaches f2c|gcc).
3158 Fri May 19 11:00:36 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3160         * Version 0.5.15 released.
3162         * com.c (ffecom_expr_power_integer_): Push temp vars
3163         before expanding a statement expression, since that seems
3164         to cause temp vars to be "forgotten" after the end of the
3165         expansion in the back end.  Disallow more temp-var
3166         pushing during such an expansion, just in case.
3167         (ffecom_push_tempvar): Crash if a new variable needs to be
3168         pushed but cannot be at this point (should never happen).
3170 Wed May 17 12:26:16 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3172         * expr.c (ffeexpr_collapse_convert): Add code to convert
3173         LOGICAL to CHARACTER.  Reject conversion of REAL or COMPLEX
3174         to CHARACTER entirely, as it cannot be supported with all
3175         configurations.
3177         * target.h, target.c (ffetarget_convert_character1_logical1):
3178         New function.
3180 Sun May 14 00:00:09 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3182         * com.c (ffecom_do_entry_, ffecom_gen_sfuncdef_,
3183         ffecom_start_progunit_, ffecom_sym_transform_,
3184         ffecom_init_0, start_function): Changes to have REAL
3185         external functions return same type as DOUBLE PRECISION
3186         external functions when -ff2c is in force; while at it,
3187         some code cleanups done.
3189         * stc.c (ffestc_R547_item_object): Disallow array declarator
3190         if one already exists for symbol.
3192         * ste.c (ffeste_R1227): Convert result variable to type
3193         of function result as seen by back end (e.g. for when REAL
3194         external function actually returns result as double).
3196         * target.h (FFETARGET_defaultFIXED_LINE_LENGTH): New
3197         macro for default for -ffixed-line-length-N option.
3199         * top.c (ffe_fixed_line_length_): Initialize this to new
3200         target.h macro instead of constant 72.
3202 Tue May  9 01:20:03 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3204         * lex.c (ffelex_send_token_): If sending CHARACTER token with
3205         null text field, put a single '\0' in it and set length/size
3206         fields to 0 (to fix 950508-0.f).
3207         (ffelex_image_char_): When setting ffelex_bad_line_ to TRUE,
3208         always "close" card image by appending a null char and setting
3209         ffelex_card_length_.  As part of this, append useful text
3210         to identify the two kinds of problems that involve this.
3211         (ffelex_file_fixed): Reset ffelex_bad_line_ to FALSE after
3212         seeing a line with invalid first character (fixes 950508-1.f).
3213         If final nontab column is zero, assume tab seen in line.
3214         (ffelex_card_image_): Always make this array 8 characters
3215         longer than reflected by ffelex_card_size_.
3216         (ffelex_init_1): Get final nontab column info from top instead
3217         of assuming 72.
3219         * options-lang.h: Add -ffixed-line-length- prefix.
3221         * top.h: Add ffe_fixed_line_length() and _set_ version, plus
3222         corresponding extern.
3224         * top.c: Handle -ffixed-line-length- option prefix.
3226 Fri Apr 28 05:40:25 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3228         * Version 0.5.14 released.
3230         * Make-lang.in: Add assert.j.
3232         * Makefile.in: Add assert.j.
3234         * assert.j: New file.
3236 Thu Apr 27 16:24:22 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3238         * bad.h (ffebad_severity): New function.
3240         * bad.c (ffebad_severity): New function.
3242         * bad.def (FFEBAD_OPEN_INCLUDE): Change severity from SEVERE
3243         to FATAL, since processing continues, and that seems fine.
3245         * com.c: Add facility to handle -I.
3246         (ffecom_file, ffecom_close_include, ffecom_open_include,
3247         ffecom_decode_include_option): New global functions for -I.
3248         (ffecom_file_, ffecom_initialize_char_syntax_,
3249         ffecom_close_include_, ffecom_decode_include_option_,
3250         ffecom_open_include_, append_include_chain, open_include_file,
3251         print_containing_files, read_filename_string, file_name_map,
3252         savestring): New internal functions for -I.
3254         * compilers.h: Pass -I flag(s) to f771 (via "%{I*}").
3256         * lex.c (ffelex_include_): Call ffecom_close_include
3257         to close include file, for its tracking needs for -I,
3258         instead of using fclose.
3260         * options-lang.h: Add -I prefix.
3262         * parse.c (yyparse): Call ffecom_file for main input file,
3263         so -I handling works (diagnostics).
3265         * std.c (ffestd_S3P4): Have ffecom_open_include handle
3266         opening and diagnosing errors with INCLUDE files.
3268         * ste.c (ffeste_begin_iterdo_): Use correct algorithm for
3269         calculating # of iterations -- mathematically similar but
3270         computationally different algorithm was not handling cases
3271         like "DO I=6,5,2" correctly, because (5-6)/2+1 => 1, not 0.
3273         * top.c (ffe_decode_option): Allow -I, restructure a bit
3274         for clarity and, maybe, speed.
3276 Mon Apr 17 13:31:11 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3278         * g77.c: Remove -lc, turns out not all systems has it, but
3279         leave other changes in for clarity of code.
3281 Sun Apr 16 21:50:33 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3283         * com.c (ffecom_expr_): Implement ARRAY_EXPR as INDIRECT_REF
3284         of appropriate PLUS_EXPRs of ptr_to_expr of array, to see
3285         if this generates better code.  (Conditional on
3286         FFECOM_FASTER_ARRAY_REFS.)
3288 Sun Apr 16 00:22:48 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3290         * Make-lang.in (F77_SRCS): Remove g77.c, since it doesn't
3291         contribute to building f771.
3293         * Makefile.in (dircheck): Remove/replace with f/Makefile, because
3294         phony targets that are referenced in other real targets get run
3295         when those targets are specified, which is a waste of time (e.g.
3296         when rebuilding and only g77.c has changed, f771 was being linked
3297         anyway).
3299         * g77.c: Include -lc between -lf2c and -lm throughout.
3301         * implic.c (ffeimplic_establish_symbol): If -Wimplicit, warn if
3302         implicit type given to symbol.
3304         * lex.c (ffelex_include_): Don't gratuitously increment line
3305         number here.
3307         * top.h, top.c (ffe_is_warn_implicit_): New global variable and
3308         related access macros.
3309         (ffe_decode_option): Handle -W options, including -Wall and
3310         -Wimplicit.
3312         * where.c (ffewhere_line_new): Don't muck with root line (was
3313         crashing on null input since lexer changes over the past week
3314         or so).
3316 Thu Apr 13 16:48:30 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3318         * com.c (ffecom_init_0): Register built-in functions for cos,
3319         sin, and sqrt.
3320         (ffecom_tree_fun_type_double): New variable.
3321         (ffecom_expr_intrinsic_): Update f2c input and output files
3322         to latest version of f2c (no important g77-related changes
3323         noted, just bug fixes to f2c and such).
3324         (builtin_function): New function from c-decl.c.
3326         * com-rt.def: Refer to built-in functions for cos, sin, and sqrt.
3328 Thu Apr 13 10:25:09 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3330         * com.c (ffecom_expr_intrinsic_): Convert 0. to appropriate
3331         type to keep DCMPLX(I) from crashing the compiler.
3332         (ffecom_expr_): Don't convert result from ffecom_tree_divide_.
3333         (ffecom_tree_divide_): Add tree_type argument, have all callers
3334         pass one, and don't convert right-hand operand to it (this is
3335         to make this new function work as much like the old in-line
3336         code used in ffecom_expr_ as possible).
3338         * lex.c: Maintain lineno and input_filename the way the gcc
3339         lexer does.
3341         * std.c (ffestd_exec_end): Save and restore lineno and
3342         input_filename around the second pass, which sets them
3343         appropriately for each saved statement.
3345 Wed Apr 12 09:44:45 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3347         * com.c (ffecom_expr_power_integer_): New function.
3348         (ffecom_expr_): Call new function for power op with integer second
3349         argument, for generating better code.  Also replace divide
3350         code with call to new ffecom_tree_divide_ function.
3351         Canonicalize calls to ffecom_truth_value(_invert).
3352         (ffecom_tree_divide_): New function.
3354 Wed Apr  5 14:15:44 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3356         * lex.c: Change to allocate text for tokens only when actually
3357         needed, which should speed compilation up somewhat.
3358         Change to allow INCLUDE at any point where a statement
3359         can end, i.e. in ffelex_finish_statement_ or when a SEMICOLON
3360         token is sent.
3361         Remove some old, obsolete code.
3362         Clean up layout of entire file to improve formatting,
3363         readability, etc.
3364         (ffelex_set_expecting_hollerith): Remove include argument.
3366 Fri Mar 31 23:19:08 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3368         * bad.h, bad.c (ffebad_start_msg, ffebad_start_msg_lex):
3369         New functions to generate arbitrary messages.
3370         (FFEBAD_severityPEDANTIC): New severity, to correspond
3371         to toplev's pedwarn() function.
3373         * lex.c (ffelex_backslash_): New function to implement
3374         backslash processing.
3375         (ffelex_file_fixed, ffelex_file_free): Implement new
3376         backslash processing.
3378         * std.c (ffestd_R1001dump_): Don't assume CHARACTER and
3379         HOLLERITH tokens stop at '\0' characters, now that backslash
3380         processing is supported -- use their advertised lengths instead,
3381         and double up the '\002' character for libf2c.
3383 Mon Mar 27 17:10:33 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3385         * com.c (ffecom_init_local_zero_): Implement -finit-local-zero.
3386         (ffecom_sym_transform_): Same.
3387         (ffecom_transform_equiv_): Same.
3389         * options-lang.h: Add -f(no-)(init-local-zero,backslash,ugly-init).
3391         * stb.c (ffestb_V020): Reject "TYPEblah(...", which might be
3392         an array assignment.
3394         * target.h, top.h, top.c: Implement -finit-local-zero.
3396 Fri Mar 24 19:56:22 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3398         * Make-lang.in, Makefile.in: Remove conf-proj(.in) and
3399         proj.h(.in) rules, plus related config.log, config.cache,
3400         and config.status stuff.
3402         * com.c (ffecom_init_0): Change messages when atof(), bsearch(),
3403         or strtoul() do not work as expected in the start-up test.
3405         * conf-proj, conf-proj.in: Delete.
3407         * lex.c (ffelex_file_fixed): Allow f2c's '&' in column 1
3408         to mean continuation line.
3410         * options-lang.h: New file, #include'd by ../toplev.c.
3412         * proj.h.in: Rename back to proj.h.
3414         * proj.h (LAME_ASSERT): Remove.
3415         (LAME_STDIO): Remove.
3416         (NO_STDDEF): Remove.
3417         (NO_STDLIB): Remove.
3418         (NO_BSEARCH): Remove auto detection, rename to !FFEPROJ_BSEARCH.
3419         (NO_STRTOUL): Remove auto detection, rename to !FFEPROJ_STRTOUL.
3420         (USE_HOST_LIMITS): Remove (maybe still needed by stand-alone?).
3421         (STR, STRX): Do only ANSI C definitions.
3423 Mon Mar 13 10:46:13 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3425         * BUGS: Add item about g77 requiring gcc to compile it.
3427         * NEWS: New file listing user-visible changes in the release.
3429         * PROJECTS: Update to include a new item or two, and modify
3430         or delete items that are addressed in this or previous releases.
3432         * bad.c (ffebad_finish): Don't crash if missing string &c,
3433         just substitute obviously distressed string "[REPORT BUG!!]"
3434         for cases where the message/caller are fudgy.
3436         * bad.def: Clean up error messages in a major way, add new ones
3437         for use by changes in target.c.
3439         * com.c (ffecom_expr_): Handle opANY in opCONVERT.
3440         (ffecom_let_char_): Disregard destinations with ERROR_MARK.
3441         (ffecom_1, ffecom_1_fn, ffecom_2, ffecom_2s, ffecom_3,
3442         ffecom_3s, &c): Check all inputs for error_mark_node.
3443         (ffecom_start_progunit_): Don't transform all symbols
3444         in BLOCK DATA, since it never executes, and it is silly
3445         to, e.g., generate all the structures for NAMELIST.
3446         (ffecom_char_length_expr_): Rename to ffecom_intrinsic_len_.
3447         (ffecom_intrinsic_ichar_): New function to handle ICHAR of
3448         arbitrary expression with possible 0-length operands.
3449         (ffecom_expr_intrinsic_): Use ffecom_intrinsic_char_.
3450         For MVBITS, set tree_type to void_type_node.
3451         (ffecom_start_progunit_): Name master function for entry points
3452         after primary entry point so users can easily guess it while
3453         debugging.
3454         (ffecom_arg_ptr_to_expr): Change treatment of Hollerith,
3455         Typeless, and %DESCR.
3456         (ffecom_expr_): Change treatment of Hollerith.
3458         * data.c (ffedata_gather_): Handle opANY in opCONVERT.
3460         * expr.c (ffeexpr_token_apostrophe_): Issue FFEBAD_NULL_CHAR_CONST
3461         warning as necessary.
3462         (ffeexpr_token_name_rhs_): Set context for args to intrinsic
3463         so that assignment-like concatenation is allowed for ICHAR(),
3464         IACHAR(), and LEN() intrinsics.
3465         (ffeexpr_reduced_*_): Say "an array" instead of "an entity" in
3466         diagnostics, since it's more informative.
3467         (ffeexpr_finished_): For many contexts, check for null expression
3468         and array before trying to do a conversion, to avoid redundant
3469         diagnostics.
3471         * g77.1: Fix typo for preprocessed suffix (.F, not .f).
3473         * global.c (ffeglobal_init_common): Warn if initializing
3474         blank common.
3475         (ffeglobal_pad_common): Enable code to warn if initial
3476         padding needed.
3477         (ffeglobal_size_common): Complain if enlarging already-
3478         initialized common, since it won't work right anyway.
3480         * intrin.c: Add IMAG() intrinsic.
3481         (ffeintrin_check_loc_): Allow opSUBSTR in LOC().
3483         * intrin.def: Add IMAG() intrinsic.
3485         * lex.c: Don't report FFEBAD_NULL_CHAR_CONST errors.
3487         * sta.c, sta.h, stb.c: Changes to clean up error messages (see
3488         bad.def).
3490         * stb.c (ffestb_R100113_): Issue FFEBAD_NULL_CHAR_CONST
3491         warning as necessary.
3493         * stc.c (ffestc_shriek_do_): Don't try to reference doref_line
3494         stuff in ANY case, since it won't be valid.
3495         (ffestc_R1227): Allow RETURN in main program unit, with
3496         appropriate warnings/errors.
3497         (ffestc_subr_format_): Array of any type is a CHAREXPR (F77 C5).
3499         * ste.c (ffeste_begin_doiter_): Couple of fixes to accurately
3500         determine if loop never executes.
3502         * target.c (ffetarget_convert_*_hollerith_): Append spaces,
3503         not zeros, to follow F77 Appendix C, and to warn when
3504         truncation of non-blanks done.
3505         (ffetarget_convert_*_typeless): Rewrite to do typeless
3506         conversions properly, and warn when truncation done.
3507         (ffetarget_print_binary, ffetarget_print_octal,
3508         ffetarget_print_hex): Rewrite to use new implementation of
3509         typeless.
3510         (ffetarget_typeless_*): Rewrite to use new implementation
3511         of typeless, and to warn about overflow.
3513         * target.h (ffetargetTypeless): New implementation of
3514         this type.
3516         * type.h, type.c (ffetype_size_typeless): Remove (incorrect)
3517         implementation of this function and its extern.
3519 Sun Mar  5 18:46:42 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3521         * BUGS: Clarify that constant handling would also fix lack of
3522         adequate IEEE-754/854 support to some degree, and typeless
3523         and non-decimal constants.
3525         * com.c (ffecom_type_permanent_copy_): Comment out to avoid
3526         warnings.
3527         (duplicate_decls): New function a la gcc/c-decl.c.
3528         (pushdecl): Use duplicate_decls to decide whether to return
3529         existing decl or new one, instead of always returning existing
3530         decl.
3531         (ffecom_expr_): opPERCENT_LOC now supports CHARACTER arguments.
3532         (ffecom_init_0): Give f2c I/O code 0 for basictypeANY/kindtypeANY.
3533         (ffecom_sym_transform_): For adjustable arrays, pass low bound
3534         through variable_size in case its primaries are changed (950302-1.f).
3536         * com.h: More decls that belong in tree.h &c.
3538         * data.c (ffedata_eval_integer1_): Fix opPAREN case to not
3539         treat value of expression as an error code.
3541         * expr.c (ffeexpr_finished_): Allow opSUBSTR in contextLOC case.
3543         * proj.c: Add "const" as appropriate.
3545 Mon Feb 27 10:04:03 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3547         * bad.def (FFEBAD_BAD_SUBSTR): Fix bad grammar in message.
3549 Fri Feb 24 16:21:31 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3551         * Version 0.5.13 released.
3553         * INSTALL: Warn that f/zzz.o will compare differently between
3554         stages, since it puts the __TIME__ macro into a string.
3556         * com.c (ffecom_sym_transform_): Transform kindFUNCTION/whereDUMMY
3557         to pointer-to-function, not function.
3558         (ffecom_expr_): Use ffecom_arg_ptr_to_expr instead of
3559         ffecom_char_args_ to handle comparison between CHARACTER
3560         types, so either operand can be a CONCATENATE.
3561         (ffecom_transform_common_): Set size of initialized common area
3562         to global (largest-known) size, even though size of init might
3563         be smaller.
3565         * equiv.c (ffeequiv_offset_): Check symbol info for ANY.
3567         * expr.c (ffeexpr_find_close_paren_, ffeexpr_nil_*): New functions
3568         to handle following the contour of a rejected expression, so
3569         statements like "PRINT(I,I,I)=0" don't cause the PRINT statement
3570         code to get the second passed back to it as if there was a
3571         missing close-paren before it, the comma causing the PRINT code
3572         to confirm the statement, resulting in an ambiguity vis-a-vis
3573         the let statement code.
3574         Use the new ffecom_find_close_paren_ handler when an expected
3575         close-paren is missing.
3576         (ffeexpr_isdigits_): New function, use in all places that
3577         currently use isdigit in repetitive code.
3578         (ffeexpr_collapse_symter): Collapse to ANY if init-expr is ANY,
3579         so as to avoid having symbol get "transformed" if used to
3580         dimension an array.
3581         (ffeexpr_token_real_, ffeexpr_token_number_real_): Don't issue
3582         diagnostic about exponent, since it'll be passed along the
3583         handler path, resulting in a diagnostic anyway.
3584         (ffeexpr_token_apos_char_): Use consistent handler path
3585         regardless of whether diagnostics inhibited.
3586         (ffeexpr_token_name_apos_name_): Skip past closing quote/apos
3587         even if not a match or other diagnostic issued.
3588         (ffeexpr_sym_impdoitem_): Exec-transition local SEEN symbol.
3590         * lex.c (ffelex_image_char_): Set ffelex_saw_tab_ if TAB
3591         seen, not if anything other than TAB seen!
3593         * stc.c (ffestc_R537_item): If source is ANY but dest isn't,
3594         set dest symbol's init expr to ANY.
3595         (ffestc_R501_attrib, ffestc_R522, ffestc_R522start): Complain
3596         about conflict between "SAVE" by itself and other uses of
3597         SAVE only in pedantic mode.
3599         * ste.c (ffeste_R1212): Fix loop over labels to always
3600         increment caseno, to avoid pushcase returning 2 for duplicate
3601         values when one of the labels is invalid.
3603 Thu Feb 23 12:42:04 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3605         * Version 0.5.12 released.
3607         * Make-lang.in (f77.install-common): Add "else true;" before outer
3608         "fi" per Makefile.in patch.
3610         * Makefile.in (dircheck): Add "else true;" before "fi" per
3611         patch from chs1pm@surrey.ac.uk.
3613         * com.c (ffecom_push_tempvar): If type desired is ERROR_MARK,
3614         return error_mark_node, to avoid crash that results from
3615         making a VAR_DECL with error_mark_node as its type.
3617         * ste.c (ffeste_begin_iterdo_): Convert itercount to INTEGER
3618         anytime calculation of number of iterations ends up with type
3619         other than INTEGER (e.g. DOUBLE PRECISION, REAL).
3621 Thu Feb 23 02:48:38 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3623         * Version 0.5.11 released.
3625         * DOC: Explain -fugly-args.
3627         * bad.def (FFEBAD_ACTUALARG): Explain -fugly-args and how to
3628         rewrite code to not require it.
3630         * com.c (ffecom_vardesc_): Handle negative type code, just in
3631         case.
3632         (ffecom_arg_ptr_to_expr): Let ffecom_expr handle hollerith
3633         and typeless constants (move code to ffecom_constantunion).
3634         (ffecom_constantunion): Handle hollerith and typeless constants.
3636         * expr.c (ffecom_finished_): Check -fugly-args in actual-arg
3637         context where hollerith/typeless provided.
3639         * intrin.def (FFEINTRIN_genDFLOAT): Add FFEINTRIN_specDFLOAT.
3640         (FFEINTRIN_specDFLOAT): Add as f2c intrinsic.
3642         * target.h (ffetarget_convert_real[12]_integer,
3643         ffetarget_convert_complex[12]_integer): Pass -1 for high integer
3644         value if low part is negative.
3645         (FFETARGET_defaultIS_UGLY_ARGS): New macro.
3647         * top.c (ffe_is_ugly_args_): New variable.
3648         (ffe_decode_option): Handle -fugly-args and -fno-ugly-args.
3650         * top.h (ffe_is_ugly_args_, ffe_is_ugly_args(),
3651         ffe_set_is_ugly_args()): New variable and macros.
3653 Thu Feb 23 02:48:38 1995  Pedro A M Vazquez  (vazquez@iqm.unicamp.br)
3655         * g77.c (sys_errlist): Use const for __FreeBSD__ systems
3656         as well.
3658 Wed Feb 22 13:33:43 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3660         * Version 0.5.10 released.
3662         * CREDITS: Add Rick Niles.
3664         * INSTALL: Note how to get around lack of makeinfo.
3666         * Make-lang.in (f/proj.h): Remove # comment.
3668         * Makefile.in (f/proj.h): Remove # comment.
3670         * com.c (ffecom_expr_): Simplify opFUNCREF/opSUBRREF conversion.
3671         (ffecom_sym_transform_): For whereGLOBAL and whereDUMMY
3672         kindFUNCTION, use ffecom_tree_fun_type[][] only for non-constant
3673         (non-statement-function) f2c functions.
3674         (ffecom_init_0): ffecom_tree_fun_type[][] and _ptr_to_*_* are
3675         really f2c-interface arrays, so use base type void for COMPLEX
3676         (like CHARACTER).
3678 Tue Feb 21 19:01:18 1995  Dave Love  <d.love@dl.ac.uk>
3680         * Make-lang.in (f77.install-common): Expurgate the test for and
3681         possible installation of f2c in line with elsewhere.  Seems to have
3682         been missing a semicolon anyhow!
3684 Tue Feb 21 11:45:25 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3686         * Version 0.5.9 released.
3688         * Make-lang.in (f/proj.h): touch file to register update,
3689         because the previous commands won't necessarily modify it.
3691         * Makefile.in (f/proj.h): touch file to register update,
3692         because the previous commands won't necessarily modify it.
3694         * Makefile.in (f/str-*.h, f/str-*.j): Explicitly specify
3695         output file names, so these targets go in build, not source,
3696         directory.
3698         * bits.c, bits.h: Switch to valid ANSI C replacement for
3699         ARRAY_ZERO.
3701         * com.c (ffecom_expr_): Add assignp arg to support ASSIGN better.
3702         If assignp is TRUE, use different tree for FFEBLD_opSYMTER case.
3703         (ffecom_sym_transform_assign_): New function.
3704         (ffecom_expr_assign): New function.
3705         (ffecom_expr_assign_w): New function.
3707         * com.c (ffecom_f2c_make_type_): Do make_signed_type instead
3708         of make_unsigned_type throughout.
3710         * com.c (ffecom_finish_symbol_transform_): Expand scope of
3711         commented-out code to probably produce faster compiler code.
3713         * com.c (ffecom_gen_sfuncdef_): Push/pop calltemps so
3714         COMPLEX works right.
3715         Remove obsolete comment.
3717         * com.c (ffecom_start_progunit_): If non-multi alt-entry
3718         COMPLEX function, primary (static) entry point returns result
3719         directory, not via extra arg -- to agree with ffecom_return_expr
3720         and others.
3721         Pretransform all symbols so statement functions are defined
3722         before any code emitted.
3724         * com.c (ffecom_finish_progunit): Don't posttransform all
3725         symbols here -- pretransform them instead.
3727         * com.c (ffecom_init_0): Don't warn about possible ASSIGN
3728         crash, as this shouldn't happen now.
3730         * com.c (ffecom_push_tempvar): Fix to handle temp vars
3731         pushed while context is a statement (nested) function, and
3732         add appropriate commentary.
3734         * com.c (ffecom_return_expr): Check TREE_USED to determine
3735         where return value is unset.
3737         * com.h (struct _ffecom_symbol_): Add note about length_tree
3738         now being used to keep tree for ASSIGN version of symbol.
3740         * com.h (ffecom_expr_assign, ffecom_expr_assign_rw): New decls.
3741         (error): Add this prototype for back-end function.
3743         * fini.c (main): Grab input, output, and include names
3744         directly off the command line instead of making the latter
3745         two out of the first.
3747         * lex.c: Improve tab handling for both fixed and free source
3748         forms, and ignore carriage-returns on input, while generally
3749         improving the code.  ffelex_handle_tab_ has been renamed and
3750         reinvented as ffelex_image_char_, among other things.
3752         * malloc.c, malloc.h: Switch to valid ANSI C replacement for
3753         ARRAY_ZERO, and kill the full number of bytes in pools and
3754         areas.
3756         * proj.h.in (ARRAY_ZERO, ARRAY_ZERO_SIZE): Remove.
3758         * ste.c (ffeste_io_cilist_, ffeste_io_icilist_, ffeste_R838,
3759         ffeste_R839): Issue diagnostic if a too-narrow variable used in an
3760         ASSIGN context despite changes to this code and code in com.c.
3762         * where.c, where.h: Switch to valid ANSI C replacement for
3763         ARRAY_ZERO.
3765 Fri Feb 17 03:35:19 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3767         * Version 0.5.8 released.
3769         * INSTALL: In quick-build case, list g77 target first so g77
3770         gets installed.  Also, explain that gcc gets built and installed
3771         as well, even though this isn't really what we want (and maybe
3772         we'll find a way around this someday).
3774 Fri Feb 17 02:35:41 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3776         * Version 0.5.7 released.
3778         * Makefile.in (CONFIG_H, HCONFIG_H, TCONFIG_H, TM_H): Remove
3779         ../ prefix in front of .h files, since they're in the cd.
3781 Fri Feb 17 01:50:48 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3783         * Version 0.5.6 released.
3785 Thu Feb 16 20:26:54 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3787         * ../README.g77: Remove description of g77 as "not-yet-published".
3789         * CREDITS: More changes.
3791         * Make-lang.in (G77STAGESTUFF): Remove cktyps stuff.
3793         * Makefile.in (CONFIG_H, HCONFIG_H, TCONFIG_H, TM_H): Don't
3794         prefix gcc dir with $(srcdir) since these don't live there,
3795         they are created in the build dir by gcc's configure.  Add
3796         a note explaining what these macros are about.
3797         Update dependencies via deps-kinda.
3799         * README.NEXTSTEP: Credit Toon, and per his request, add his
3800         email address.
3802         * com.h (FFECOM_DETERMINE_TYPES): #include "config.j".
3804         * config.j, convert.j, flags.j, hconfig.j, rtl.j, tconfig.j,
3805         tm.j, tree.j: Don't #include if already done.
3807         * convert.j: #include "tree.j" first, as convert.h clearly depends
3808         on trees being defined.
3810         * rtl.j: #include "config.j" first, since there's some stuff
3811         in rtl.h that assumes it has been #included.
3813         * tree.j: #include "config.j" first, or real.h makes inconsistent
3814         decision about return type of ereal_atof, leading to bugs, and
3815         because tree.h/real.h assume config.h already included.
3817 Wed Feb 15 14:40:20 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3819         * Version 0.5.5 released.
3821         * Copyright notices updated to be FSF-style.
3823         * INSTALL: Some more clarification regarding building just f77.
3825         * Make-lang.in (F77_SRCS): Update wrt changing some .h to .j.
3826         (install-libf77): Fix typo in new parenthetical note.
3828         * Makefile.in (f/*.o): Update.
3829         (CONFIG_H, CONVERT_H, FLAGS_H, GLIMITS_H, HCONFIG_H, RTL_H,
3830         TCONFIG_H, TM_H, TREE_H): Update/new symbols.
3831         (deps-kinda): More fixes wrt changing some .h to .j.
3832         Document and explain this rule a bit better.
3833         Accommodate changes in output of gcc -MM.
3835         * *.h, *.c: Change #include's so proj.h not assumed to #include
3836         malloc.h or config.h (now config.j), and so new .j files are
3837         used instead of old .h ones.
3839         * com.c (ffecom_init_0): Use FLOAT_TYPE_SIZE for f2c's
3840         TYLONG/TYLOGICAL type codes, to get g77 working on Alpha.
3842         * com.h: Make all f2c-related integral types "int", not "long
3843         int".
3845         * config.j, convert.j, flags.j, glimits.j, hconfig.j, rtl.j,
3846         tconfig.j, tm.j, tree.j: New files wrapping around gbe
3847         .h files.
3849         * config.h, convert.h, flags.h, glimits.h, hconfig.h, rtl.h,
3850         tconfig.h, tm.h, tree.h: Deleted so new .j files
3851         can #include the gbe files directly, instead of using "../",
3852         and thus do better with various kinds of builds.
3854         * proj.h: Delete unused NO_STDDEF and related stuff.
3856 Tue Feb 14 08:28:08 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3858         * BUGS: Remove item #12, cross-compiling & autoconf scripts
3859         reportedly expected to work properly (according to d.love).
3861         * INSTALL: Add explanation of d.love's patch to config-lang.in.
3862         Add explanation of how to install just g77 when gcc already installed.
3863         Add note about usability of "-Wall".  Add note about bug-
3864         reporting.
3866         * Make-lang.in ($(srcdir)/f/conf-proj): Add comment about why
3867         conf-proj.out.
3868         (install-libf77): Echo parenthetical note to user about how to do
3869         just the (aborted) libf2c installation.
3870         (deps-kinda): Update to work with new configuration/build stuff.
3872         * bad.c (ffebad_finish): Put capitalized "warning:" &c message
3873         as prefix on any diagnostic without pointers into source.
3875         * bad.def (FFEBAD_TOO_BIG_INIT): Add this warning message.
3877         * config-lang.in: Add Dave Love's patch to catch case where
3878         back-end patches not applied and abort configuration.
3880         * data.c (ffedata_gather_, ffedata_value_): Warn when about
3881         to initialize a large aggregate area, due to design flaw resulting
3882         in too much time/space used to handle such cases.
3883         Use COMMON area name, and first notice of symbol, for multiple-
3884         initialization diagnostic, instead of member symbol and unknown
3885         location.
3886         (FFEDATA_sizeTOO_BIG_INIT_): New macro per above.
3888 Mon Feb 13 13:54:26 1995  Dave Love  <d.love@dl.ac.uk>
3890         * Make-lang.in (F77_SRCS): Use $(srcdir)/f/proj.h.in, not
3891         $(srcdir)/f/proj.h for build outside srcdir.
3893 Sun Feb 12 13:37:11 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3895         * ../README.g77: Clarify procedures for unpacking, add asterisks
3896         to mark important things the user must do.
3898         * Fix dates in/add dates to ../README.g77, BUGS, CREDITS, DOC,
3899         INSTALL, PROJECTS, README.
3901 Sun Feb 12 00:26:10 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3903         * Version 0.5.4 released.
3905         * Make-lang.in (f/proj.h): Reproduce this rule here from
3906         Makefile.in.
3907         ($(srcdir)/f/conf-proj): Put autoconf's stdout in temp file
3908         conf-proj.out, then mv to conf-proj only if successful, so
3909         conf-proj not touched if autoconf not installed.
3911         * Makefile.in ($(srcdir)/conf-proj): See Make-lang.in's similar
3912         rule.
3914 Sat Feb 11 20:56:02 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3916         * BUGS: Clarify some bugs.
3918         * DOC: Many improvements and fixes.
3920         * README: Move bulk of text, edited, to ../README.g77, and
3921         replace with pointer to that file.
3923         * com.c (ffecom_init_0): Comment out warning about sizeof(ftnlen)
3924         as per ste.c change.  Add text about ASSIGN to help user understand
3925         what is being warned about.
3927         * conf-proj.in: Fix typos in comments.
3929         * proj.h.in: Add ARRAY_ZERO_SIZE to parallel malloc.h's version,
3930         in case it proves to be needed.
3932         * ste.c: Comment out assertions requiring sizeof(ftnlen) >=
3933         sizeof(char *), in the hopes that overflow will never happen.
3934         (ffeste_R838): Change assertion to fatal() with at least
3935         partially helpful message.
3937 Sat Feb 11 12:38:00 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3939         * com.c (ffecom_vardesc_): Crash if typecode is -1.
3941         * ste.c (ffeste_io_dolio_): Crash if typecode is -1.
3943 Sat Feb 11 09:51:57 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3945         * ste.c: In I/O code tests for item arrayness, sort of revert
3946         to much earlier code that tests original exp, but also check
3947         in newer way just in case.  Newer way alone treated FOO(1:40)
3948         as an array, not sure why older way alone didn't work, but I
3949         think maybe it was when diagnosed code was involved, and
3950         since there are now checks for error_mark_node, maybe the old
3951         way alone would work.  But better to be safe; both original
3952         ffebld exp _and_ the transformed tree must indicate an array
3953         for the size-determination code to be used, else just 1/2 elements
3954         assumed.  And this text is for EMACS: (foo at bar).
3956 Fri Feb 10 11:05:50 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3958         * ste.c: In many cases, surround statement-expansion code
3959         with ffecom_push_calltemps () and ffecom_pop_calltemps ()
3960         so COMPLEX-returning functions can have temporaries pushed
3961         in "auto-pop" mode and have them auto-popped at the end of
3962         the statement.
3964 Wed Feb  8 14:35:10 1995  Dave Love  <d.love@dl.ac.uk>
3966         * runtime/f2c.h.in (ftnlen, ftnint): Make same size as integer.
3968         * runtime/libI77/err.c (f_init): Thinko in MISSING_FILE_ELEMS
3969         conditional.
3970         * runtime/libI77/wrtfmt.c (mv_cur): Likewise.
3971         * runtime/libI77/wsfe.c (x_putc): Likewise.
3973         * runtime/libF77/signal_.c (signal_): Return 0 (this is a
3974         subroutine).
3976         * Makefile.in (f/proj.h): Depend on com.h.
3977         * Make-lang.in (include/f2c.h): Likewise (and proj.h).
3978         (install-libf77): Also install f2c.h.
3980         * runtime/libI77/Makefile.in (*.o): Add f2c.h dependency.
3981         * runtime/libF77/Makefile.in:  Likewise.
3983 Wed Feb  8 13:56:47 1995  Craig Burley  (burley@gnu.ai.mit.edu)
3985         * stc.c (ffestc_R501_item): Don't reset kind/where to NONE when
3986         setting basictype/kindtype info for symbol, or especially
3987         its function/result twin, because kind/where might not be NONE.
3989 Tue Feb  7 14:47:26 1995  Dave Love  <d.love@dl.ac.uk>
3991         * Make-lang.in (include/f2c.h:): Set shell variable src more
3992         robustly (independent of whether srcdir is relative or absolute).
3993         * Makefile.in (f/proj.h:): Likewise.
3995         * conf-proj.in: Check need for LAME_ASSERT.  Fix indentation in
3996         check for LAME_STDIO (cosmetic only with ANSI C).
3998         * com.h: Extra ...SIZE stuff taken from com.c.
4000         * com.c (FFECOM_DETERMINE_TYPES): Define before including com.h.
4001         (BITS_PER_WORD etc.) Remove and use conditional definitions to com.h.
4003         * runtime/configure.in: #define FFECOM_DETERMINE_TYPES for com.h in
4004         f2c type determination.
4006         * tm.h: Remove (at least pro tem) because of relative path and use
4007         top-level one.
4009         * Make-lang.in (include/f2c.h:): Set shell variable src more
4010         robustly (independent of whether srcdir is relative or absolute).
4011         * Makefile.in (f/proj.h:): Likewise.
4013 Mon Feb  6 19:58:32 1995  Dave Love  <d.love@dl.ac.uk>
4015         * g77.c (append_arg): Use K&R declaration for, e.g. SunOS4 build.
4017 Fri Feb  3 20:33:14 1995  Craig Burley  (burley@gnu.ai.mit.edu)
4019         * g77.c (main): Treat -l like filename in terms of -x handling.
4020         Rewrite arglist mechanism for ease of maintenance.
4021         Make sure every -lf2c is followed by -lm and vice versa.
4023         * Make-lang.in: Put complete list of sources in F77_SRCS def
4024         so changing a .h file, for example, causes rebuild.
4026         * Makefile.in: Change test for nextstep to m68k-next-nextstep* so
4027         all versions of nextstep on m68k get the necessary flag.
4029 Fri Feb  3 19:10:32 1995  Dave Love  <d.love@dl.ac.uk>
4031         * INSTALL: Note about possible conflict with existing libf2c.a and
4032         f2c.h.
4034         * Make-lang.in (f77.distclean): Tidy and move deletion of
4035         f/config.cache to mostlyclean.
4036         (install-libf77): Test for $(libdir)/libf2c.* and barf if found
4037         unless F2CLIBOK defined.
4039         * runtime/Makefile.in (all): Change path to include directory (and
4040         elsewhere).
4041         (INCLUDES): Remove (unused/misleading).
4042         (distclean): Include f2c.h.
4043         (clean): Include config.cache.
4045         * runtime/libF77/Makefile.in (.SUFFIXES): Correct typo.
4046         (ALL_CFLAGS) Fix up include search path to find f2c.h in top level
4047         includes always.
4048         (all): Depend on f2c.h.
4049         * runtime/libI77/Makefile.in (.SUFFIXES): Likewise.
4051 Thu Feb  2 17:17:06 1995  Dave Love  <d.love@dl.ac.uk>
4053         * INSTALL: Note about --srcdir and GNU make.
4055         * runtime/f2c.h.in (Pad_UDread, ALWAYS_FLUSH): Reomve the #defines
4056         per below.
4058         * runtime/configure.in (Pad_UDread, ALWAYS_FLUSH): Define these
4059         here, not in f2c.h as they'r eonly relevant for building.
4060         * runtime/configure: Regenerated.
4062         * config-lang.in: Warn about using GNU make outside source tree
4063         since I can't get Irix5 or SunOS4 makes to work in this case.
4065         * Makefile.in (VPATH): Don't set it here.
4066         (srcdir): Make it the normal `.' (overridden) at top level.
4067         (all.indirect): New dependency `dircheck'.
4068         (f771): Likewise
4069         (dircheck): New target for foolproofing.
4070         (f/proj.h:): Change finding source.
4071         (CONFIG_H): Don't use this as the relative path in the include loses
4072         f builddir != srcdir.
4074         * config.h: Remove per CONFIG_H change above.
4076         * Make-lang.in (F77_FLAGS_TO_PASS): Remove GCC_FOR_TARGET.
4077         (f771:): Pass VPATH, srcdir to sub-make.
4078         (f/Makefile:): New target.
4079         (stmp-int-hdrs): new variable for cheating build.
4080         (f77-runtime:): Alter GCC_FOR_TARGET treatment.
4081         (include/f2c.h f/runtime/Makefile:) Likewise.
4082         (f77-runtime-unsafe:): New (cheating) target.
4084 Thu Feb  2 12:09:51 1995  Craig Burley  (burley@gnu.ai.mit.edu)
4086         * BUGS: Update regarding losing EQUIVALENCE members in -g, and
4087         regarding RS/6000 problems in the back end.
4089         * CREDITS: Make some changes as requested.
4091         * com.c (ffecom_member_trunk_): Remove unused static variable.
4092         (ffecom_finish_symbol_transform_): Improve comments.
4093         (ffecom_let_char_): Fix size of temp address-type var.
4094         (ffecom_member_phase2_): Try fixing problem fixed by change
4095         to ffecom_transform_equiv_ (f_m_p2_ function currently not used).
4096         (ffecom_transform_equiv_): Remove def of unused static variable.
4097         Comment-out use of ffecom_member_phase2_, until problems with
4098         back end fixed.
4099         (ffecom_push_tempvar): Fix assertion to not crash okay code.
4101         * com.h: Remove old, commented-out code.
4102         Add prototype for warning() in back end.
4104         * ste.c (ffeste_io_dofio_, ffeste_io_dolio_, ffeste_io_douio_,
4105         ffeste_io_icilist_): Check correct type of variable for arrayness.
4107 Sun Jan 29 14:41:42 1995  Dave Love  <d.love@dl.ac.uk>
4109         * BUGS: Remove references to my configure bugs; add another.
4111         * runtime/Makefile.in (AR_FLAGS): Provide default value.
4113         * runtime/f2c.h.in (integer, logical): Take typedefs from
4114         F2C_INTEGER configuration parameter again.
4115         (NON_UNIX_STDIO): don't define it.
4117         * runtime/configure.in: Bring type checks for f2c.h in line with
4118         com.h.
4119         (MISSING_FILE_ELEMS): New variable to determine whether the relevant
4120         elements of the FILE struct exist, independent of NON_UNIX_STDIO.
4121         * runtime/libI77/{err,wrtfmt,wsfe}.c (MISSING_FILE_ELEMS): Use new
4122         parameter.
4124         * config-lang.in: Comment out more of f2c rules (c.f. Make-lang.in).
4125         (This stuff is relevant iff you gave configure --enable-f2c.)
4126         Create f/runtime directory tree iff not building in source
4127         directory.
4129         * Makefile.in (srcdir): Append slash so we get the right value when
4130         not building in the source directory.  This is a consequence of not
4131         building the `f' sources in `f'.
4132         (VPATH): Override configure's value for reasons above.
4133         (f/proj.h f/conf-proj): New rules to build proj.h by
4134         autoconfiguration.
4136         * proj.h: Rename to proj.h.in for autoconfiguration.
4137         * proj.h.in: New as above.
4138         * conf-proj conf-proj.in: New files for autoconfiguration.
4140         * Make-lang.in (include/f2c.h f/runtime/Makefile:): Change the order
4141         of setting the sh variables so that the right GCC_FOR_TARGET is
4142         used.
4143         (f77.*clean:) Add products of new configuration files and make sure
4144         all the *clean targets do something (unlike the ones in
4145         cp/Make-lange.in).
4147         * com.h (FFECOM_f2cINTEGER, FFECOM_f2cLOGICAL): Define as long or
4148         int appropriately to ensure sizeof(real) == sizeof(integer).
4150         * PROJECTS: Library section.
4152         * runtime/libI77/endfile.c: Don't #include sys/types.h conditional
4153         on NON_UNIX_STDIO since rawio.h needs size_t.
4154         * runtime/libI77/uio.c: #include <sys/types.h> for size_t if not
4155         KR_headers.
4157 Wed Jan 25 03:31:51 1995  Craig Burley  (burley@gnu.ai.mit.edu)
4159         * Version 0.5.3 released.
4161         * INSTALL: Revise.
4163         * Make-lang.in: Comment out rules for building f2c itself (f/f2c/).
4165         * README: Revise.
4167         * com.c (ffecom_init_0): Warn if ftnlen or INTEGER not big enough
4168         to hold a char *.
4170         * gbe/2.6.2.diff: Update.
4172 Mon Jan 23 17:10:49 1995  Craig Burley  (burley@gnu.ai.mit.edu)
4174         * TODO: Remove.
4175         BUGS: New file.
4176         PROJECTS: New file.
4177         CREDITS: New file.
4179         * cktyps*: Remove.
4180         Make-lang.in: Remove cktyps stuff.
4181         Makefile.in: Remove cktyps stuff.
4183         * DOC: Add info on changes for 0.5.3.
4185         * bad.c: Put "warning:" &c on diagnostic messages.
4186         Don't output informational messages if warnings disabled.
4188 Thu Jan 19 12:38:13 1995  Craig Burley  (burley@gnu.ai.mit.edu)
4190         * g77.c: Avoid putting out useless "-xnone -xf77" pairs so
4191         larger command lines can be accommodated.
4192         Recognize both `-xlang' and `-x lang'.
4193         Recognize `-xnone' and `-x none' to mean what it does, instead
4194         of treating "none" as any other language.
4195         Some minor, slight improvements in the way args are handled
4196         (hopefully for clearer, more maintainable code), including
4197         consistency checks on arg count just in case.
4199 Wed Jan 18 16:41:57 1995  Craig Burley  (burley@gnu.ai.mit.edu)
4201         * DOC: Explain -fautomatic better.
4203         * INSTALL: Describe libf2c.a better.
4205         * Make-lang.in, Makefile.in: Build f771 &c with gcc/ as cd instead
4206         of gcc/f/ so debugging info is better (source file tracking).
4207         Add new source file type.c.
4209         * Makefile.in: For nextstep3, link f771 with -segaddr __DATA
4210         6000000.  Fix typo.  Change deps-kinda target to handle building
4211         from gcc/.  Update dependencies.
4213         * bld-op.def, bld.h, bld.c: Remove opBACKEND and all related
4214         stuff.
4215         Remove consistency tests that cause compiler warnings.
4217         * cktyps.c: Remove all typing checking.
4219         * com-rt.def: Change all rttypeFLOAT_ intrinsics to rttypeDOUBLE_,
4220         to precisely match how they're declared in libf2c.
4222         * com.h, com.c: Revise to more elegantly track related stuff
4223         in the version of f2c.h used to build libf2c.
4225         * com.c: Increase FFECOM_sizeMAXSTACKITEM, and if 0 or undefined
4226         when checked to determine where to put entity, treat as infinite.
4227         Rewrite temporary mechanism to be based on trees instead of
4228         ffeinfo stuff, and make it much simpler.  Change interface
4229         accordingly.
4230         Fixes to better track types of things, make appropriate
4231         conversions, etc.  E.g. when making an arg for a libf2c
4232         function, make sure it's of the right type (such as ftnlen).
4233         Delete opBACKEND transformation code.
4234         (ffecom_init_0): Smoother initialization of types, especially
4235         paying attention to using consistent rules for making INTEGER,
4236         REAL, DOUBLE PRECISION, etc., and for deciding their "*N"
4237         and kind values that will work across all g77 platforms.
4238         No longer require per-target configuration info in target.h
4239         or config/*/*; use new type module to store size, alignment.
4240         (ffecom_member_phase2): Declare COMMON/EQUIVALENCE group members
4241         so debugger sees them.
4242         (ffecom_finish_progunit): Transform all symbols in program unit,
4243         so -g will show they all exist.
4245         * expr.c (ffeexpr_collapse_substr): Handle strange substring
4246         range values.
4248         * info.h, info.c: Provide connection to new type module.
4249         Remove tests that yield compiler warnings.
4251         * intrin.c (ffeintrin_is_intrinsic): Properly handle deleted
4252         intrinsic.
4254         * lex.c (ffelex_file_fixed): Remove redundant/buggy code.
4256         * stc.c (ffestc_kindtype_kind_, ffestc_kindtype_star_): Replace
4257         boring switch stmt with simple call to new type module.  This
4258         sort of thing is a reason to get up in the morning.
4260         * ste.c: Update to handle new interface for
4261         ffecom_push/pop_tempvar.
4262         Fixes to better track types of things.
4263         Fixes to not crash for certain diagnosed constructs.
4264         (ffeste_begin_iterdo_): Check only constants for overflow to avoid
4265         spurious diagnostics.
4266         Don't convert larger integer (say, INTEGER*8) to canonical integer
4267         for iteration count.
4269         * stw.h: Track DO iteration count temporary variable.
4271         * symbol.c: Remove consistency tests that cause compiler warnings.
4273         * target.c (ffetarget_aggregate_info): Replace big switch with
4274         little call to new type module.
4275         (ffetarget_layout): Remove consistency tests that cause
4276         compiler warnings.
4277         (ffetarget_convert_character1_typeless): Pick up length of
4278         typeless type from new type module.
4280         * target.h: Crash build if target float bit pattern cannot be
4281         precisely determined.
4282         Remove all the type cruft now determined by ffecom_init_0
4283         at invocation time and maintained in new type module.
4284         Put casts on second arg of all REAL_VALUE_TO_TARGET_DOUBLE
4285         uses so compiler warnings avoided (requires target float bit
4286         pattern to be precisely determined, hence code to crash build).
4288         * top.c: Add inits/terminates for new type module.
4290         * type.h, type.c: New module.
4292         * gbe/2.6.2.diff: Remove all patches to files in gcc/config/
4293         directory and its subdirectories.
4295 Mon Jan  9 19:23:25 1995  Dave Love  <d.love@dl.ac.uk>
4297         * com.h (FFECOM_F2C_INTEGER_TYPE_NODE): Define and use instead of
4298         long_integer_type_node where appropriate.
4300 Tue Jan  3 14:56:18 1995  Dave Love  <d.love@dl.ac.uk>
4302         * com.h: Make ffecom_f2c_logical_type_node long, consistent with
4303         integer.
4305 Fri Dec  2 20:07:37 1994  Dave Love  <d.love@dl.ac.uk>
4307         * config-lang.in (stagestuff): Add f2c conditionally.
4308         * Make-lang.in: Add f2c and related targets.
4309         * f2c: Add the directory.
4311 Fri Nov 25 22:17:26 1994  Dave Love  <d.love@dl.ac.uk>
4313         * Makefile.in (FLAGS_TO_PASS): pass $(CROSS)
4314         * Make-lang.in: more changes to runtime targets
4316 Thu Nov 24 18:03:21 1994  Dave Love  <d.love@dl.ac.uk>
4318         * Makefile.in (FLAGS_TO_PASS): define for sub-makes
4320         * g77.c (main): change f77-cpp-output to f77-cpp-input (.F files)
4322 Wed Nov 23 15:22:53 1994  Dave Love  <d.love@dl.ac.uk>
4324         * bad.c (ffebad_finish): kluge to fool emacs19 into finding errors:
4325         add trailing space to <file>:<line>:
4327 Tue Nov 22 11:30:50 1994  Dave Love  <d.love@dl.ac.uk>
4329         * runtime/libF77/signal_.c (RETSIGTYPE): added
4331 Mon Nov 21 13:04:13 1994  Dave Love  <d.love@dl.ac.uk>
4333         * Makefile.in (compiler): add runtime
4335         * config-lang.in (stagestuff): add libf2c.a to stagestuff
4337         * Make-lang.in:
4338         G77STAGESTUFF <- MORESTAGESTUFF
4339         f77-runtime: new target, plus supporting ones
4341         * runtime: add the directory, containing libI77, libF77 and autoconf
4342         stuff
4344         * g++.1: remove
4346         * g77.1: minor fixes
4348 Thu Nov 17 15:18:05 1994  Craig Burley  (burley@gnu.ai.mit.edu)
4350         * Version 0.5.2 released.
4352         * bad.def: Modify wording of FFEBAD_UNIMPL_STMT to indicate
4353         that it covers a wide array of possible problems (that, someday,
4354         should be handled via separate diagnostics).
4356         * lex.c: Allow $ in identifiers if -fdollar-ok.
4357         * top.c: Support -fdollar-ok.
4358         * top.h: Support -fdollar-ok.
4359         * target.h: Support -fdollar-ok.
4360         * DOC: Describe -fdollar-ok.
4362         * std.c (ffestd_R1229_finish): Fix bug so stand-alone build works.
4363         * ste.c (ffeste_R819A): Fix bug so stand-alone build works.
4365         * Make: Improvements for stand-alone build.
4367         * Makefile.in: Fix copyright text at top of file.
4369         * LINK, SRCS, UNLINK: Removed.  Not particularly useful now that
4370         g77 sources live in their own subdirectory.
4372         * g77.c (main): Cast arg to bzero to avoid warning.  (This is
4373         identical to Kenner's fix to cp/g++.c.)
4375         * gbe/: New subdirectory, to contain .diff files for various
4376         versions of the GNU CC back end.
4378         * gbe/README: New file.
4379         * gbe/2.6.2.diff: New file.
4381 Tue Nov  8 10:23:10 1994  Dave Love  <d.love@dl.ac.uk>
4383         * Make-lang.in: don't install as f77 as well as g77 to avoid
4384         confusion with system's compiler (especially while testing)
4386         * g77.c (main): use -lf2c and -lm; fix sense of test for .f/.F files
4388 Fri Oct 28 09:45:00 1994  Craig Burley  (burley@gnu.ai.mit.edu)
4390         * Version 0.5.1 released.
4392         * gcc.c: Invoke f771 instead of f-771.
4394 Fri Oct 28 02:00:44 1994  Craig Burley  (burley@gnu.ai.mit.edu)
4396         * Version 0.5.0 released.
4398 Fri Oct 14 15:03:35 1994  Craig Burley  (burley@gnu.ai.mit.edu)
4400         * Makefile.in: Handle the Fortran-77 front-end in a subdirectory.
4401         * f-*: Move Fortran-77 front-end to f/*.