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