diff options
author | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-03-22 10:06:48 +0000 |
---|---|---|
committer | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-03-22 10:06:48 +0000 |
commit | 1a248bc5fdaace77ebd534558faf2f1769f9c83b (patch) | |
tree | 6af6707aafa0ac354bc90c0e1121fb0c1bc27abb /gcc/f | |
parent | e7576bb21b06c6a2c144cdce755a3db5a0ede505 (diff) | |
download | gcc-1a248bc5fdaace77ebd534558faf2f1769f9c83b.tar.gz |
Merge in g77-0.5.22.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@18753 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/f')
-rw-r--r-- | gcc/f/ChangeLog | 137 | ||||
-rw-r--r-- | gcc/f/INSTALL | 140 | ||||
-rw-r--r-- | gcc/f/Makefile.in | 2 | ||||
-rw-r--r-- | gcc/f/bugs.texi | 84 | ||||
-rw-r--r-- | gcc/f/com.c | 23 | ||||
-rw-r--r-- | gcc/f/expr.c | 2 | ||||
-rw-r--r-- | gcc/f/g77.texi | 4 | ||||
-rw-r--r-- | gcc/f/intdoc.in | 18 | ||||
-rw-r--r-- | gcc/f/intdoc.texi | 34 | ||||
-rw-r--r-- | gcc/f/intrin.c | 2 | ||||
-rw-r--r-- | gcc/f/intrin.def | 110 | ||||
-rw-r--r-- | gcc/f/lang-options.h | 18 | ||||
-rw-r--r-- | gcc/f/news.texi | 164 | ||||
-rw-r--r-- | gcc/f/std.c | 2 | ||||
-rw-r--r-- | gcc/f/ste.c | 2 | ||||
-rw-r--r-- | gcc/f/target.c | 2 | ||||
-rw-r--r-- | gcc/f/version.c | 2 |
17 files changed, 449 insertions, 297 deletions
diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog index 7e1d12d3327..4a87a2ae0c6 100644 --- a/gcc/f/ChangeLog +++ b/gcc/f/ChangeLog @@ -1,29 +1,48 @@ +Mon Mar 16 15:38:50 1998 Craig Burley <burley@gnu.org> + + * Version 0.5.22 released. + +Mon Mar 16 14:36:02 1998 Craig Burley <burley@gnu.org> + + Make -g work better for ENTRY: + * com.c (ffecom_start_progunit_): Master function + for ENTRY-laden procedure is not really invented, + so it can be debugged. + (ffecom_do_entry_): Push/set/pop lineno for each + entry point. + +Sun Mar 15 05:48:49 1998 Craig Burley <burley@gnu.org> + + * intrin.def: Fix spelling of mixed-case form + of `CPU_Time' (was `Cpu_Time'). + +1998-03-09 Dave Love <d.love@dl.ac.uk> + + * Make-lang.in: Set CONFIG_SITE to a non-existent file since + /dev/null loses with bash 2.0/autoconf 2.12. Put + F77_FLAGS_TO_PASS before CC. + +Sun Mar 8 16:35:34 1998 Craig Burley <burley@gnu.org> + + * intrin.def: Use tabs instead of blanks more + consistently (excepting DEFGEN section for now). + +Sat Feb 28 15:24:38 1998 Craig Burley <burley@gnu.org> + + * intrin.def: Make CPU_TIME's arg generic real to be just + like SECOND_subr. + Fri Feb 20 12:45:53 1998 Craig Burley <burley@gnu.org> * expr.c (ffeexpr_token_arguments_): Make sure outer exprstack isn't null. -Fri Feb 20 10:11:20 1998 Craig Burley <burley@gnu.org> - - * Make-lang.in (f77.install-info): Fix typo in script. +1998-02-16 Dave Love <d.love@dl.ac.uk> - * Make-lang.in (f77.install-info): Don't install, and - don't uninstall existing, Info files if f/g77.info - doesn't exit. (This is a somewhat modified version - of an egcs patch on 1998-01-07 12:05:51 by Bruno Haible - <bruno@linuix.mathematik.uni-karlsruhe.de>.) + * Makefile.in (f/fini): Don't use -W -Wall with HOST_CC. Sun Jan 11 02:14:47 1998 Craig Burley <burley@gnu.org> - Fix 970626-2.f by not doing most back-end processing - when current_function_decl is an ERROR_MARK, and by - making that the case when its type would be an ERROR_MARK: - * com.c (ffecom_start_progunit_, finish_function, - lang_printable_name, start_function, - ffecom_finish_symbol_transform_): Test for ERROR_MARK. - * std.c (ffestd_stmt_pass_): Don't do any downstream - processing if ERROR_MARK. - Support FORMAT(I<1+2>) (constant variable-FORMAT expressions): * bad.def (FFEBAD_FORMAT_VARIABLE): New diagnostic. @@ -38,13 +57,53 @@ Sun Jan 11 02:14:47 1998 Craig Burley <burley@gnu.org> * stb.c (ffestb_R10014_, ffestb_R10016_, ffestb_R10018_, ffestb_R100110_): Restructure `for' loop for style. + Fix 970626-2.f by not doing most back-end processing + when current_function_decl is an ERROR_MARK, and by + making that the case when its type would be an ERROR_MARK: + * com.c (ffecom_start_progunit_, finish_function, + lang_printable_name, start_function, + ffecom_finish_symbol_transform_): Test for ERROR_MARK. + * std.c (ffestd_stmt_pass_): Don't do any downstream + processing if ERROR_MARK. + + * Make-lang.in (f77.install-common): Don't install, and + don't uninstall existing, Info files if f/g77.info + doesn't exit. (This is a somewhat modified version + of an egcs patch on 1998-01-07 12:05:51 by Bruno Haible + <bruno@linuix.mathematik.uni-karlsruhe.de>.) + Fri Jan 9 19:09:07 1998 Craig Burley <burley@gnu.org> + Fix -fpedantic combined with `F()' invocation, + also -fugly-comma combined with `IARGC()' invocation: + * bad.def (FFEBAD_NULL_ARGUMENT_W): New diagnostic. + * expr.c (ffeexpr_finished_): Don't reject null expressions + in the argument-expression context -- let outer context + handle that. + (ffeexpr_token_arguments_): Warn about null expressions + here if -fpedantic (as appropriate). + Obey -fugly-comma for only external-procedure invocations. * intrin.c (ffeintrin_check_): No longer ignore explicit omitted trailing args. Tue Dec 23 14:58:04 1997 Craig Burley <burley@gnu.org> + * intrin.c (ffeintrin_fulfill_generic): Don't generate + FFEBAD_INTRINSIC_TYPE for CHARACTER*(*) intrinsic. + + * com.c (ffecom_gfrt_basictype): + (ffecom_gfrt_kindtype): + (ffecom_make_gfrt_): + (FFECOM_rttypeVOIDSTAR_): New return type `void *', for + the SIGNAL intrinsic. + * com-rt.def (FFECOM_rttypeSIGNAL): Now returns `void *'. + * intdoc.c: Replace `p' kind specifier with `7'. + * intrin.c (ffeintrin_check_, ffeintrin_init_0): Replace + `p' kind specifier with `7'. + * intrin.def (FFEINTRIN_impLOC, FFEINTRIN_impSIGNAL_func, + FFEINTRIN_impSIGNAL_subr): Replace `p' specifier with `7'. + Also, SIGNAL now returns a `void *' status, not `int'. + Improve run-time diagnostic for "PRINT '(I1', 42": * com.c (ffecom_char_args_x_): Renamed from ffecom_char_args_, which is now a macro (to avoid lots of changes to other code) @@ -68,21 +127,8 @@ Tue Dec 23 14:58:04 1997 Craig Burley <burley@gnu.org> (ffetarget_hollerith): Append extra phantom null byte as part of FFETARGET-NULL-BYTE kludge. - * intrin.c (ffeintrin_fulfill_generic): Don't generate - FFEBAD_INTRINSIC_TYPE for CHARACTER*(*) intrinsic. - - * com.c (ffecom_gfrt_basictype): - (ffecom_gfrt_kindtype): - (ffecom_make_gfrt_): - (FFECOM_rttypeVOIDSTAR_): New return type `void *', for - the SIGNAL intrinsic. - * com-rt.def (FFECOM_rttypeSIGNAL): Now returns `void *'. - * intdoc.c: Replace `p' kind specifier with `7'. - * intrin.c (ffeintrin_check_, ffeintrin_init_0): Replace - `p' kind specifier with `7'. - * intrin.def (FFEINTRIN_impLOC, FFEINTRIN_impSIGNAL_func, - FFEINTRIN_impSIGNAL_subr): Replace `p' specifier with `7'. - Also, SIGNAL now returns a `void *' status, not `int'. + * intrin.def (FFEINTRIN_impCPU_TIME): Point to + FFECOM_gfrtSECOND as primary run-time routine. Mon Dec 22 12:41:07 1997 Craig Burley <burley@gnu.org> @@ -97,6 +143,10 @@ Sun Dec 14 02:49:58 1997 Craig Burley <burley@gnu.org> * intdoc.c: Fix up indentation a bit. +Tue Dec 9 16:20:57 1997 Richard Henderson <rth@cygnus.com> + + * com.c (ffecom_type_vardesc_): Vardesc.dims is a `ftnlen*'. + Mon Dec 1 19:12:36 1997 Craig Burley <burley@gnu.org> * intrin.c (ffeintrin_check_): Fix up indentation a bit more. @@ -111,17 +161,31 @@ Mon Dec 1 16:21:08 1997 Craig Burley <burley@gnu.org> Sun Nov 30 22:22:22 1997 Craig Burley <burley@gnu.org> - * intrin.def: Fix up spacing a bit. - * intdoc.c: Minor fix-ups. * intrin.c (ffeintrin_check_): Fix up indentation a bit. + * intrin.def: Fix up spacing a bit. + 1997-11-17 Dave Love <d.love@dl.ac.uk> * com.c (ffecom_arglist_expr_): Pass null pointers for optional args which aren't supplied. +Sun Nov 16 21:45:43 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * Make-lang.in (f77.install-info): Depend on f77.info. + +1997-11-06 Dave Love <d.love@dl.ac.uk> + + * intrin.def: Allow non-integer args for INT2 and INT8 (per + documentation). + +Tue Oct 28 02:21:25 1997 Craig Burley <burley@gnu.ai.mit.edu> + + * lang-options.h: Add -fgnu-intrinsics-* and + -fbadu77-intrinsics-* options. + Sun Oct 26 02:36:21 1997 Craig Burley <burley@gnu.ai.mit.edu> * com.c (lang_print_error_function): Fix to more @@ -148,6 +212,11 @@ Fri Oct 10 13:00:48 1997 Craig Burley <burley@gnu.ai.mit.edu> * com.c (ffecom_save_tree): Fix indentation. +1997-10-05 Dave Love <d.love@dl.ac.uk> + + * intrin.def: Make SECOND_subr's arg generic real for people + porting from Cray and making everything double precision. + Mon Sep 29 16:18:21 1997 Craig Burley <burley@gnu.ai.mit.edu> * stu.c (ffestu_list_exec_transition_, diff --git a/gcc/f/INSTALL b/gcc/f/INSTALL index 31730a1363f..176c03035d6 100644 --- a/gcc/f/INSTALL +++ b/gcc/f/INSTALL @@ -41,8 +41,9 @@ follow the `g77' installation instructions: available--in fact, a complete GNU UNIX system can be put together on most systems, if desired. - The version of GNU `gzip' used to package this release is 1.24. - (The version of GNU `tar' used to package this release is 1.11.2.) + The version of GNU `gzip' used to package this release is + 1.2.4. (The version of GNU `tar' used to package this release is + 1.12.) `gcc-2.7.2.3.tar.gz' You need to have this, or some other applicable, version of `gcc' @@ -57,7 +58,7 @@ follow the `g77' installation instructions: Without an applicable `gcc' source tree, you cannot build `g77'. You can obtain an FSF distribution of `gcc' from the FSF. -`g77-0.5.21.tar.gz' +`g77-0.5.22.tar.gz' You probably have already unpacked this package, or you are reading an advance copy of these installation instructions, which are contained in this distribution. The size of this package is @@ -148,14 +149,16 @@ Enough disk space In any case, you can apply patches by hand--patch files are designed for humans to read them. - The version of GNU `patch' used to develop this release is 2.4. + The version of GNU `patch' used to develop this release is + 2.5. `make' Your system must have `make', and you will probably save yourself a lot of trouble if it is GNU `make' (sometimes referred to as `gmake'). - The version of GNU `make' used to develop this release is 3.73. + The version of GNU `make' used to develop this release is + 3.76.1. `cc' Your system must have a working C compiler. @@ -170,7 +173,8 @@ Enough disk space distribution. You can obtain `bison' the same way you obtained `gcc' and `g77'. - The version of GNU `bison' used to develop this release is 1.25. + The version of GNU `bison' used to develop this release is + 1.25. *Note Missing bison?::, for information on how to work around not having `bison'. @@ -190,10 +194,10 @@ Enough disk space All UNIX systems have `sed', but some have a broken version that cannot handle configuring, building, or installing `gcc' or `g77'. - The version of GNU `sed' used to develop this release is 2.05. - (Note that GNU `sed' version 3.0 was withdrawn by the FSF--if you - happen to have this version installed, replace it with version - 2.05 immediately. See a GNU distribution site for further + The version of GNU `sed' used to develop this release is + 2.05. (Note that GNU `sed' version 3.0 was withdrawn by the + FSF--if you happen to have this version installed, replace it with + version 2.05 immediately. See a GNU distribution site for further explanation.) `root' access or equivalent @@ -329,7 +333,20 @@ corresponding output files. If the above does not work, definitely start from scratch and avoid copying the `gcc' using any method that does not reliably preserve -date-time-modified information, such as the UNIX `cp -r' command. +date-time-modified information, such as the UNIX `cp -r' command (use +`cp -pr' instead). + +System-specific Problems +------------------------ + + If your system is based on a Digital Alpha (AXP) architecture and +employs a 64-bit operating system (such as GNU/Linux), you might +consider using `egcs' instead of versions of `g77' based on versions of +`gcc' prior to 2.8. `http://www.cygnus.com/egcs' for information on +`egcs', or obtain a copy from `ftp://egcs.cygnus.com/pub/egcs'. + + If your system is Irix 6, to obtain a working version of `gcc', +`http://reality.sgi.com/knobi/gcc-2.7.2.x-on-irix-6.2-6.3'. Cross-compiler Problems ----------------------- @@ -482,11 +499,12 @@ Floating-point Bit Patterns The `g77' build will crash if an attempt is made to build it as a cross-compiler for a target when `g77' cannot reliably determine the bit pattern of floating-point constants for the target. Planned -improvements for g77-0.6 will give it the capabilities it needs to not -have to crash the build but rather generate correct code for the target. -(Currently, `g77' would generate bad code under such circumstances if -it didn't crash during the build, e.g. when compiling a source file -that does something like `EQUIVALENCE (I,R)' and `DATA R/9.43578/'.) +improvements for version 0.6 of `g77' will give it the capabilities it +needs to not have to crash the build but rather generate correct code +for the target. (Currently, `g77' would generate bad code under such +circumstances if it didn't crash during the build, e.g. when compiling +a source file that does something like `EQUIVALENCE (I,R)' and `DATA +R/9.43578/'.) Initialization of Large Aggregate Areas --------------------------------------- @@ -558,7 +576,7 @@ is assumed that the source distributions themselves already reside in system: /usr/FSF/gcc-2.7.2.3.tar.gz - /usr/FSF/g77-0.5.21.tar.gz + /usr/FSF/g77-0.5.22.tar.gz Users of the following systems should not blindly follow these quick-start instructions, because of problems their systems have coping @@ -584,17 +602,17 @@ of some of the steps. These explanations follow this list of steps. sh[ 2]# gunzip -c < /usr/FSF/gcc-2.7.2.3.tar.gz | tar xf - [Might say "Broken pipe"...that is normal on some systems.] - sh[ 3]# gunzip -c < /usr/FSF/g77-0.5.21.tar.gz | tar xf - + sh[ 3]# gunzip -c < /usr/FSF/g77-0.5.22.tar.gz | tar xf - ["Broken pipe" again possible.] sh[ 4]# ln -s gcc-2.7.2.3 gcc - sh[ 5]# ln -s g77-0.5.21 g77 + sh[ 5]# ln -s g77-0.5.22 g77 sh[ 6]# mv -i g77/* gcc [No questions should be asked by mv here; or, you made a mistake.] - sh[ 7]# patch -p1 -V t -d gcc < gcc/f/gbe/2.7.2.3.diff + sh[ 7]# patch -p1 -E -V t -d gcc < gcc/f/gbe/2.7.2.3.diff [Unless patch complains about rejected patches, this step worked.] sh[ 8]# cd gcc @@ -646,17 +664,17 @@ Step 1: `cd /usr/src' your system knew where to look for the source code for the installed version of `g77' and `gcc' in any case. -Step 3: `gunzip -d < /usr/FSF/g77-0.5.21.tar.gz | tar xf -' +Step 3: `gunzip -d < /usr/FSF/g77-0.5.22.tar.gz | tar xf -' It is not always necessary to obtain the latest version of `g77' as a complete `.tar.gz' file if you have a complete, earlier distribution of `g77'. If appropriate, you can unpack that earlier version of `g77', and then apply the appropriate patches to - achieve the same result--a source tree containing version 0.5.21 - of `g77'. + achieve the same result--a source tree containing version + 0.5.22 of `g77'. Step 4: `ln -s gcc-2.7.2.3 gcc' -Step 5: `ln -s g77-0.5.21 g77' +Step 5: `ln -s g77-0.5.22 g77' These commands mainly help reduce typing, and help reduce visual clutter in examples in this manual showing what to type to install `g77'. @@ -666,7 +684,7 @@ Step 5: `ln -s g77-0.5.21 g77' Step 6: `mv -i g77/* gcc' After doing this, you can, if you like, type `rm g77' and `rmdir - g77-0.5.21' to remove the empty directory and the symbol link to + g77-0.5.22' to remove the empty directory and the symbol link to it. But, it might be helpful to leave them around as quick reminders of which version(s) of `g77' are installed on your system. @@ -675,10 +693,9 @@ Step 6: `mv -i g77/* gcc' directory (as merged into the `gcc' directory). Step 7: `patch -p1 ...' - This can produce a wide variety of printed output, from `Hmm, I - can't seem to find a patch in there anywhere...' to long lists of - messages indicated that patches are being found, applied - successfully, and so on. + If you are using GNU `patch' version 2.5 or later, this should + produce a list of files patched. (Other versions of `patch' might + not work properly.) If messages about "fuzz", "offset", or especially "reject files" are printed, it might mean you applied the wrong patch file. If @@ -692,6 +709,13 @@ Step 7: `patch -p1 ...' *Note Merging Distributions::, for more information. + *Note:* `gcc' versions circa 2.7.2.2 and 2.7.2.3 are known to have + slightly differing versions of the `gcc/ChangeLog' file, depending + on how they are obtained. You can safely ignore diagnostics + `patch' reports when patching this particular file, since it is + purely a documentation file for implementors. See + `gcc/f/gbe/2.7.2.3.diff' for more information. + Step 9: `touch f77-install-ok' Don't do this if you don't want to overwrite an existing version of `f77' (such as a native compiler, or a script that invokes @@ -824,9 +848,9 @@ generally only the documentation is immediately usable. sh# cd /usr/src sh# gunzip -c /usr/FSF/gcc-2.7.2.3.tar.gz | tar xf - - sh# gunzip -c /usr/FSF/g77-0.5.21.tar.gz | tar xf - + sh# gunzip -c /usr/FSF/g77-0.5.22.tar.gz | tar xf - sh# ln -s gcc-2.7.2.3 gcc - sh# ln -s g77-0.5.21 g77 + sh# ln -s g77-0.5.22 g77 sh# mv -i g77/* gcc *Notes:* The commands beginning with `gunzip...' might print `Broken @@ -938,10 +962,9 @@ changes to the `g77' front end (FFE). in general, will stabilize sufficiently for the need for hand-patching to disappear. - Invoking `patch' as described in `gcc/f/gbe/README' can produce a -wide variety of printed output, from `Hmm, I can't seem to find a patch -in there anywhere...' to long lists of messages indicated that patches -are being found, applied successfully, and so on. + If you are using GNU `patch' version 2.5 or later, this should +produce a list of files patched. (Other versions of `patch' might not +work properly.) If messages about "fuzz", "offset", or especially "reject files" are printed, it might mean you applied the wrong patch file. If you @@ -957,6 +980,13 @@ works). of several files as saved by `patch'. To remove these, after `cd gcc', type `rm -i *.~*~'. + *Note:* `gcc' versions circa 2.7.2.2 and 2.7.2.3 are known to have +slightly differing versions of the `gcc/ChangeLog' file, depending on +how they are obtained. You can safely ignore diagnostics `patch' +reports when patching this particular file, since it is purely a +documentation file for implementors. See `gcc/f/gbe/2.7.2.3.diff' for +more information. + *Note:* `g77''s configuration file `gcc/f/config-lang.in' ensures that the source code for the version of `gcc' being configured has at least one indication of being patched as required specifically by `g77'. @@ -966,7 +996,8 @@ explanation. *Please* do not try to disable the check, otherwise `g77' might well appear to build and install correctly, and even appear to compile correctly, but could easily produce broken code. - `diff -rcp2N' is used to create the patch files in `gcc/f/gbe/'. + `LC_ALL=C TZ=UTC0 diff -rcp2N' is used to create the patch files in +`gcc/f/gbe/'. Installing `f77' ---------------- @@ -1311,46 +1342,46 @@ them when they work: sh# cd /usr/src/gcc sh# ./g77 --driver=./xgcc -B./ -v - g77 version 0.5.21 + g77 version 0.5.22 ./xgcc -B./ -v -fnull-version -o /tmp/gfa18047 ... Reading specs from ./specs - gcc version 2.7.2.3.f.1 + gcc version 2.7.2.3.f.2 ./cpp -lang-c -v -isystem ./include -undef ... - GNU CPP version 2.7.2.3.f.1 (Linux/Alpha) + GNU CPP version 2.7.2.3.f.2 (Linux/Alpha) #include "..." search starts here: #include <...> search starts here: ./include /usr/local/include /usr/alpha-unknown-linux/include - /usr/lib/gcc-lib/alpha-unknown-linux/2.7.2.3.f.1/include + /usr/lib/gcc-lib/alpha-unknown-linux/2.7.2.3.f.2/include /usr/include End of search list. ./f771 /tmp/cca18048.i -fset-g77-defaults -quiet -dumpbase ... - GNU F77 version 2.7.2.3.f.1 (Linux/Alpha) compiled ... - GNU Fortran Front End version 0.5.21 compiled: ... + GNU F77 version 2.7.2.3.f.2 (Linux/Alpha) compiled ... + GNU Fortran Front End version 0.5.22 compiled: ... as -nocpp -o /tmp/cca180481.o /tmp/cca18048.s ld -G 8 -O1 -o /tmp/gfa18047 /usr/lib/crt0.o -L. ... - __G77_LIBF77_VERSION__: 0.5.21 + __G77_LIBF77_VERSION__: 0.5.22 @(#)LIBF77 VERSION 19970404 - __G77_LIBI77_VERSION__: 0.5.21 + __G77_LIBI77_VERSION__: 0.5.22 @(#) LIBI77 VERSION pjw,dmg-mods 19970816 - __G77_LIBU77_VERSION__: 0.5.21 + __G77_LIBU77_VERSION__: 0.5.22 @(#) LIBU77 VERSION 19970609 sh# ./xgcc -B./ -v -o /tmp/delete-me -xc /dev/null -xnone Reading specs from ./specs - gcc version 2.7.2.3.f.1 + gcc version 2.7.2.3.f.2 ./cpp -lang-c -v -isystem ./include -undef ... - GNU CPP version 2.7.2.3.f.1 (Linux/Alpha) + GNU CPP version 2.7.2.3.f.2 (Linux/Alpha) #include "..." search starts here: #include <...> search starts here: ./include /usr/local/include /usr/alpha-unknown-linux/include - /usr/lib/gcc-lib/alpha-unknown-linux/2.7.2.3.f.1/include + /usr/lib/gcc-lib/alpha-unknown-linux/2.7.2.3.f.2/include /usr/include End of search list. ./cc1 /tmp/cca18063.i -quiet -dumpbase null.c -version ... - GNU C version 2.7.2.3.f.1 (Linux/Alpha) compiled ... + GNU C version 2.7.2.3.f.2 (Linux/Alpha) compiled ... as -nocpp -o /tmp/cca180631.o /tmp/cca18063.s ld -G 8 -O1 -o /tmp/delete-me /usr/lib/crt0.o -L. ... /usr/lib/crt0.o: In function `__start': @@ -1596,10 +1627,9 @@ general) are broken, at least for their system. Finally, *please* ask for bug reports to go to you first, at least until you're sure your distribution is widely used and has been well tested. This especially goes for those of you making any changes to -the `g77' sources to port `g77', e.g. to OS/2. -<fortran@gnu.org> has received a fair number of bug reports that -turned out to be problems with other peoples' ports and distributions, -about which nothing could be done for the user. Once you are quite -certain a bug report does not involve your efforts, you can forward it -to us. +the `g77' sources to port `g77', e.g. to OS/2. <fortran@gnu.org> has +received a fair number of bug reports that turned out to be problems +with other peoples' ports and distributions, about which nothing could +be done for the user. Once you are quite certain a bug report does not +involve your efforts, you can forward it to us. diff --git a/gcc/f/Makefile.in b/gcc/f/Makefile.in index 4d502cb72bd..7ef9bc49e1c 100644 --- a/gcc/f/Makefile.in +++ b/gcc/f/Makefile.in @@ -503,7 +503,7 @@ f/str-ot.h f/str-ot.j: f/fini f/str-ot.fin ./f/fini `echo $(srcdir)/f/str-ot.fin | sed 's,^\./,,'` f/str-ot.j f/str-ot.h f/fini: f/fini.o f/proj-h.o - $(HOST_CC) $(HOST_CFLAGS) -W -Wall $(HOST_LDFLAGS) -o f/fini f/fini.o f/proj-h.o + $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o f/fini f/fini.o f/proj-h.o f/fini.o: $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) \ diff --git a/gcc/f/bugs.texi b/gcc/f/bugs.texi index f6ad4807ef9..4fb96303c8b 100644 --- a/gcc/f/bugs.texi +++ b/gcc/f/bugs.texi @@ -1,11 +1,11 @@ -@c Copyright (C) 1995-1997 Free Software Foundation, Inc. +@c Copyright (C) 1995-1998 Free Software Foundation, Inc. @c This is part of the G77 manual. @c For copying conditions, see the file g77.texi. @c The text of this file appears in the file BUGS @c in the G77 distribution, as well as in the G77 manual. -@c 1996-09-09 +@c 1998-03-15 @ifclear BUGSONLY @node Actual Bugs @@ -40,45 +40,6 @@ in this case, @samp{R} might be initialized to @samp{4.0}. Until this bug is fixed, use only @samp{-O1} or no optimization. -@cindex DNRM2 -@cindex stack, 387 coprocessor -@cindex ix86 -@cindex -O2 -@item -A code-generation bug afflicts -Intel x86 targets when @samp{-O2} is specified -compiling, for example, an old version of -the @samp{DNRM2} routine. -The x87 coprocessor stack is being somewhat -mismanaged in cases where assigned @code{GOTO} -and @code{ASSIGN} are involved. - -Version 0.5.21 of @code{g77} contains an initial -effort to fix the problem, but this effort is -incomplete, and a more complete fix is planned -for the next release. - -@cindex SIGNAL() intrinsic -@cindex intrinsics, SIGNAL() -@item -Work is needed on the @code{SIGNAL()} intrinsic to ensure -that pointers and integers are properly handled on all -targets, including 64-bit machines. - -@cindex -fugly-comma option -@cindex options, -fugly-comma -@item -When using @samp{-fugly-comma}, @code{g77} assumes an extra -@samp{%VAL(0)} argument is to be passed to intrinsics -taking no arguments, such as @code{IARGC()}, which in -turn reject such a call. -Although this has been worked around for 0.5.18 due -to changes in the handling of intrinsics, -@code{g77} needs to do the ugly-argument-appending trick -only for external-function invocation, as this would -probably be more consistent with compilers that default -to using that trick. - @item Something about @code{g77}'s straightforward handling of label references and definitions sometimes prevents the GBE @@ -225,42 +186,6 @@ is the potential, with the current setup, for interface differences in the way such areas are laid out between @code{g77} and other compilers. -@item -Some crashes occur when compiling under Solaris on x86 -machines. - -Nothing has been heard about any such problems for some time, -so this is considering a closed item as of 0.5.20. -Please submit any bug reports pertinent to @code{g77}'s support -for Solaris/x86 systems. - -@cindex RS/6000 support -@cindex support, RS/6000 -@item -RS/6000 support is not complete as of the gcc 2.6.3 back end. -The 2.7.0 back end appears to fix this problem, or at least mitigate -it significantly, but there is at least one known problem that is -likely to be a code-generation bug in @file{gcc-2.7.0} plus -@file{g77-0.5.16}. -This problem shows up only when compiling the Fortran program with @samp{-O}. - -Nothing has been heard about any RS/6000 problems for some time, -so this is considering a closed item as of 0.5.20. -Please submit any bug reports pertinent to @code{g77}'s support -for RS/6000 systems. - -@cindex SGI support -@cindex support, SGI -@item -SGI support is known to be a bit buggy. -The known problem shows up only when compiling the Fortran program with -@samp{-O}. - -It is possible these problems have all been fixed in 0.5.20 by -emulating complex arithmetic in the front end. -Please submit any bug reports pertinent to @code{g77}'s support -for SGI systems. - @cindex Alpha, support @cindex support, Alpha @item @@ -312,9 +237,8 @@ general expressions (other than simple variables/arrays), to procedures when compiling on some systems (such as i386) with @samp{-fPIC}, as in when compiling for ELF targets. The symptom is that the assembler complains about invalid opcodes. -More investigation is needed, but the problem is almost certainly -in the gcc back end, and it apparently occurs only when +This bug is in the gcc back end, +and it apparently occurs only when compiling sufficiently complicated functions @emph{without} the @samp{-O} option. @end itemize - diff --git a/gcc/f/com.c b/gcc/f/com.c index acaadb9a490..0f895a91a9e 100644 --- a/gcc/f/com.c +++ b/gcc/f/com.c @@ -1,5 +1,5 @@ /* com.c -- Implementation File (module.c template V1.0) - Copyright (C) 1995-1997 Free Software Foundation, Inc. + Copyright (C) 1995-1998 Free Software Foundation, Inc. Contributed by James Craig Burley (burley@gnu.ai.mit.edu). This file is part of GNU Fortran. @@ -2362,6 +2362,11 @@ ffecom_do_entry_ (ffesymbol fn, int entrynum) bool multi; /* Master fn has multiple return types. */ bool altreturning = FALSE; /* This entry point has alternate returns. */ int yes; + int old_lineno = lineno; + char *old_input_filename = input_filename; + + input_filename = ffesymbol_where_filename (fn); + lineno = ffesymbol_where_filelinenum (fn); /* c-parse.y indeed does call suspend_momentary and not only ignores the return value, but also never calls resume_momentary, when starting an @@ -2708,6 +2713,9 @@ ffecom_do_entry_ (ffesymbol fn, int entrynum) finish_function (0); + lineno = old_lineno; + input_filename = old_input_filename; + ffecom_doing_entry_ = FALSE; } @@ -6241,8 +6249,8 @@ ffecom_expr_power_integer_ (ffebld left, ffebld right) r are the "inputs": ({ typeof (r) rtmp = r; - typeof (l) ltmp = l; - typeof (l) result; + typeof (l) ltmp = l; + typeof (l) result; if (rtmp == 0) result = 1; @@ -7857,9 +7865,12 @@ ffecom_start_progunit_ () } if (altentries) - id = ffecom_get_invented_identifier ("__g77_masterfun_%s", - ffesymbol_text (fn), - 0); + { + id = ffecom_get_invented_identifier ("__g77_masterfun_%s", + ffesymbol_text (fn), + 0); + IDENTIFIER_INVENTED (id) = 0; /* Allow this to be debugged. */ + } #if FFETARGET_isENFORCED_MAIN else if (main_program) id = get_identifier (FFETARGET_nameENFORCED_MAIN_NAME); diff --git a/gcc/f/expr.c b/gcc/f/expr.c index 8dbab2f3099..0459301e55a 100644 --- a/gcc/f/expr.c +++ b/gcc/f/expr.c @@ -1,5 +1,5 @@ /* expr.c -- Implementation File (module.c template V1.0) - Copyright (C) 1995-1997 Free Software Foundation, Inc. + Copyright (C) 1995-1998 Free Software Foundation, Inc. Contributed by James Craig Burley (burley@gnu.ai.mit.edu). This file is part of GNU Fortran. diff --git a/gcc/f/g77.texi b/gcc/f/g77.texi index eb9a7014428..5cf39974994 100644 --- a/gcc/f/g77.texi +++ b/gcc/f/g77.texi @@ -102,7 +102,7 @@ was contributed to Craig by David Ronis (@email{ronis@@onsager.chem.mcgill.ca}). @sp 2 @center James Craig Burley @sp 3 -@center Last updated 1997-09-09 +@center Last updated 1998-01-11 @sp 1 @c The version number appears some more times in this file. @@ -12317,7 +12317,7 @@ or @url{ftp://ftp.dsm.fordham.edu}. @cindex Makefile example Here are some sample @file{Makefile} rules using @code{ftnchek} ``project'' files to do cross-file checking and @code{sfmakedepend} -(from @url{ftp://ahab.rutgers.edu/pub/perl/sfmakedepend}) +(from @uref{ftp://ahab.rutgers.edu/pub/perl/sfmakedepend}) to maintain dependencies automatically. These assume the use of GNU @code{make}. diff --git a/gcc/f/intdoc.in b/gcc/f/intdoc.in index 80046b730c2..f8c9b8261df 100644 --- a/gcc/f/intdoc.in +++ b/gcc/f/intdoc.in @@ -1282,15 +1282,13 @@ Returns the local time in seconds since midnight minus the value DEFDOC (SECOND_func, "Get CPU time for process in seconds.", "\ Returns the process's runtime in seconds---the same value as the UNIX function @code{etime} returns. - -This routine is known from Cray Fortran. ") DEFDOC (SECOND_subr, "Get CPU time for process@99@in seconds.", "\ Returns the process's runtime in seconds in @var{@1@}---the same value as the UNIX function @code{etime} returns. -This routine is known from Cray Fortran. @xref{Cpu_Time Intrinsic} +This routine is known from Cray Fortran. @xref{CPU_Time Intrinsic} for a standard equivalent. ") @@ -1445,6 +1443,10 @@ If the @var{@2@} argument is supplied, it contains 0 on success or a non-zero error code otherwise upon return. See @code{chdir(3)}. +@emph{Caution:} Using this routine during I/O to a unit connected with a +non-absolute file name can cause subsequent I/O on such a unit to fail +because the I/O library may reopen files by name. + Some non-GNU implementations of Fortran provide this intrinsic as only a function, not as a subroutine, or do not support the (optional) @var{@2@} argument. @@ -1455,6 +1457,10 @@ Sets the current working directory to be @var{@1@}. Returns 0 on success or a non-zero error code. See @code{chdir(3)}. +@emph{Caution:} Using this routine during I/O to a unit connected with a +non-absolute file name can cause subsequent I/O on such a unit to fail +because the I/O library may reopen files by name. + Due to the side effects performed by this intrinsic, the function form is not recommended. ") @@ -2039,6 +2045,12 @@ trailing blanks in @var{@1@} are ignored. DEFDOC (GETLOG, "Get login name.", "\ Returns the login name for the process in @var{@1@}. + +@emph{Caution:} On some systems, the @code{getlogin(3)} +function, which this intrinsic calls at run time, +is either not implemented or returns a null pointer. +In the latter case, this intrinsic returns blanks +in @var{@1@}. ") DEFDOC (HOSTNM_func, "Get host name.", "\ diff --git a/gcc/f/intdoc.texi b/gcc/f/intdoc.texi index 7db02afc9a3..cf48c4b9914 100644 --- a/gcc/f/intdoc.texi +++ b/gcc/f/intdoc.texi @@ -150,7 +150,7 @@ @end ifset @ifset familyF90 * Count Intrinsic:: (Reserved for future use.) -* Cpu_Time Intrinsic:: Get current CPU time. +* CPU_Time Intrinsic:: Get current CPU time. * CShift Intrinsic:: (Reserved for future use.) @end ifset @ifset familyF77 @@ -2229,6 +2229,10 @@ If the @var{Status} argument is supplied, it contains 0 on success or a non-zero error code otherwise upon return. See @code{chdir(3)}. +@emph{Caution:} Using this routine during I/O to a unit connected with a +non-absolute file name can cause subsequent I/O on such a unit to fail +because the I/O library may reopen files by name. + Some non-GNU implementations of Fortran provide this intrinsic as only a function, not as a subroutine, or do not support the (optional) @var{Status} argument. @@ -2264,6 +2268,10 @@ Sets the current working directory to be @var{Dir}. Returns 0 on success or a non-zero error code. See @code{chdir(3)}. +@emph{Caution:} Using this routine during I/O to a unit connected with a +non-absolute file name can cause subsequent I/O on such a unit to fail +because the I/O library may reopen files by name. + Due to the side effects performed by this intrinsic, the function form is not recommended. @@ -2595,18 +2603,18 @@ The name is, however, reserved as an intrinsic. Use @samp{EXTERNAL Count} to use this name for an external procedure. -@node Cpu_Time Intrinsic -@subsubsection Cpu_Time Intrinsic -@cindex Cpu_Time intrinsic -@cindex intrinsics, Cpu_Time +@node CPU_Time Intrinsic +@subsubsection CPU_Time Intrinsic +@cindex CPU_Time intrinsic +@cindex intrinsics, CPU_Time @noindent @example -CALL Cpu_Time(@var{Seconds}) +CALL CPU_Time(@var{Seconds}) @end example @noindent -@var{Seconds}: @code{REAL(KIND=1)}; scalar; INTENT(OUT). +@var{Seconds}: @code{REAL}; scalar; INTENT(OUT). @noindent Intrinsic groups: @code{f90}. @@ -5270,6 +5278,12 @@ Description: Returns the login name for the process in @var{Login}. +@emph{Caution:} On some systems, the @code{getlogin(3)} +function, which this intrinsic calls at run time, +is either not implemented or returns a null pointer. +In the latter case, this intrinsic returns blanks +in @var{Login}. + @node GetPId Intrinsic @subsubsection GetPId Intrinsic @cindex GetPId intrinsic @@ -9093,8 +9107,6 @@ Description: Returns the process's runtime in seconds---the same value as the UNIX function @code{etime} returns. -This routine is known from Cray Fortran. - For information on other intrinsics with the same name: @xref{Second Intrinsic (subroutine)}. @@ -9109,7 +9121,7 @@ CALL Second(@var{Seconds}) @end example @noindent -@var{Seconds}: @code{REAL(KIND=1)}; scalar; INTENT(OUT). +@var{Seconds}: @code{REAL}; scalar; INTENT(OUT). @noindent Intrinsic groups: @code{unix}. @@ -9120,7 +9132,7 @@ Description: Returns the process's runtime in seconds in @var{Seconds}---the same value as the UNIX function @code{etime} returns. -This routine is known from Cray Fortran. @xref{Cpu_Time Intrinsic} +This routine is known from Cray Fortran. @xref{CPU_Time Intrinsic} for a standard equivalent. For information on other intrinsics with the same name: diff --git a/gcc/f/intrin.c b/gcc/f/intrin.c index 0b699b75e96..5ab530be809 100644 --- a/gcc/f/intrin.c +++ b/gcc/f/intrin.c @@ -1,5 +1,5 @@ /* intrin.c -- Recognize references to intrinsics - Copyright (C) 1995-1997 Free Software Foundation, Inc. + Copyright (C) 1995-1998 Free Software Foundation, Inc. Contributed by James Craig Burley (burley@gnu.ai.mit.edu). This file is part of GNU Fortran. diff --git a/gcc/f/intrin.def b/gcc/f/intrin.def index c4105c96dfa..29766543c8f 100644 --- a/gcc/f/intrin.def +++ b/gcc/f/intrin.def @@ -76,7 +76,7 @@ DEFNAME ("COS", "cos", "Cos", genNONE, specCOS) DEFNAME ("COSD", "cosd", "CosD", genNONE, specCOSD) /* VXT */ DEFNAME ("COSH", "cosh", "CosH", genNONE, specCOSH) DEFNAME ("COUNT", "count", "Count", genNONE, specCOUNT) /* F90 */ -DEFNAME ("CPU_TIME", "cpu_time", "Cpu_Time", genNONE, specCPU_TIME) /* F95 */ +DEFNAME ("CPU_TIME", "cpu_time", "CPU_Time", genNONE, specCPU_TIME) /* F95 */ DEFNAME ("CSHIFT", "cshift", "CShift", genNONE, specCSHIFT) /* F90 */ DEFNAME ("CSIN", "csin", "CSin", genNONE, specCSIN) DEFNAME ("CSQRT", "csqrt", "CSqRt", genNONE, specCSQRT) @@ -3206,7 +3206,7 @@ DEFIMP (TAN, "TAN", L_TAN,TAN,, "R=:0:X=R*") DEFIMP (TANH, "TANH", L_TANH,TANH,, "R=:0:X=R*") DEFIMP (ABORT, "ABORT", ABORT,,, "--:-:") -DEFIMP (ACCESS, "ACCESS", ACCESS,,, "I1:-:Name=A1,Mode=A1") +DEFIMP (ACCESS, "ACCESS", ACCESS,,, "I1:-:Name=A1,Mode=A1") DEFIMP (ACHAR, "ACHAR", ,,, "A1:-:I=I*") DEFIMP (ALARM, "ALARM", ALARM,,, "--:-:Seconds=I*,Handler=s*,Status=?I1w") DEFIMP (AND, "AND", ,,, "B=:*:I=B*,J=B*") @@ -3229,10 +3229,10 @@ DEFIMP (CHDIR_subr, "CHDIR_subr", CHDIR,,, "--:-:Dir=A1,Status=?I1w") DEFIMP (CHMOD_func, "CHMOD_func", CHMOD,,, "I1:-:Name=A1,Mode=A1") DEFIMP (CHMOD_subr, "CHMOD_subr", CHMOD,,, "--:-:Name=A1,Mode=A1,Status=?I1w") DEFIMP (COMPLEX, "COMPLEX", ,,, "C=:*:Real=S*,Imag=S*") -DEFIMP (CPU_TIME, "CPU_TIME", SECOND,,, "--:-:Seconds=R1w") -DEFIMP (CTIME_func, "CTIME_func", CTIME,,, "A1*:-:STime=I*") -DEFIMP (CTIME_subr, "CTIME_subr", CTIME,,, "--:-:Result=A1w,STime=I*") -DEFIMP (DATE, "DATE", DATE,,, "--:-:Date=A1w") +DEFIMP (CPU_TIME, "CPU_TIME", SECOND,,, "--:-:Seconds=R*w") +DEFIMP (CTIME_func, "CTIME_func", CTIME,,, "A1*:-:STime=I*") +DEFIMP (CTIME_subr, "CTIME_subr", CTIME,,, "--:-:Result=A1w,STime=I*") +DEFIMP (DATE, "DATE", DATE,,, "--:-:Date=A1w") DEFIMP (DBESJ0, "DBESJ0", L_BESJ0,,, "R2:-:X=R2") DEFIMP (DBESJ1, "DBESJ1", L_BESJ1,,, "R2:-:X=R2") DEFIMP (DBESJN, "DBESJN", L_BESJN,,, "R2:-:N=I*,X=R2") @@ -3245,28 +3245,28 @@ DEFIMP (DERFC, "DERFC", L_ERFC,DERFC,, "R2:-:X=R2") DEFIMP (DFLOAT, "DFLOAT", ,,, "R2:-:A=I*") DEFIMP (DIMAG, "DIMAG", ,DIMAG,, "R2:-:Z=C2") DEFIMP (DREAL, "DREAL", ,,, "R2:-:A=N*") -DEFIMP (DTIME_func, "DTIME_func", DTIME,,, "R1:-:TArray=R1(2)w") -DEFIMP (DTIME_subr, "DTIME_subr", DTIME,,, "--:-:Result=R1w,TArray=R1(2)w") +DEFIMP (DTIME_func, "DTIME_func", DTIME,,, "R1:-:TArray=R1(2)w") +DEFIMP (DTIME_subr, "DTIME_subr", DTIME,,, "--:-:Result=R1w,TArray=R1(2)w") DEFIMP (ERF, "ERF", L_ERF,ERF,, "R=:0:X=R*") DEFIMP (ERFC, "ERFC", L_ERFC,ERFC,, "R=:0:X=R*") -DEFIMP (ETIME_func, "ETIME_func", ETIME,,, "R1:-:TArray=R1(2)w") -DEFIMP (ETIME_subr, "ETIME_subr", ETIME,,, "--:-:Result=R1w,TArray=R1(2)w") +DEFIMP (ETIME_func, "ETIME_func", ETIME,,, "R1:-:TArray=R1(2)w") +DEFIMP (ETIME_subr, "ETIME_subr", ETIME,,, "--:-:Result=R1w,TArray=R1(2)w") DEFIMP (EXIT, "EXIT", EXIT,,, "--:-:Status=?I*") -DEFIMP (FDATE_func, "FDATE_func", FDATE,,, "A1*:-:") -DEFIMP (FDATE_subr, "FDATE_subr", FDATE,,, "--:-:Date=A1w") -DEFIMP (FGET_func, "FGET_func", FGET,,, "I1:-:C=A1w") -DEFIMP (FGET_subr, "FGET_subr", FGET,,, "--:-:C=A1w,Status=?I1w") -DEFIMP (FGETC_func, "FGETC_func", FGETC,,, "I1:-:Unit=I*,C=A1w") -DEFIMP (FGETC_subr, "FGETC_subr", FGETC,,, "--:-:Unit=I*,C=A1w,Status=?I1w") +DEFIMP (FDATE_func, "FDATE_func", FDATE,,, "A1*:-:") +DEFIMP (FDATE_subr, "FDATE_subr", FDATE,,, "--:-:Date=A1w") +DEFIMP (FGET_func, "FGET_func", FGET,,, "I1:-:C=A1w") +DEFIMP (FGET_subr, "FGET_subr", FGET,,, "--:-:C=A1w,Status=?I1w") +DEFIMP (FGETC_func, "FGETC_func", FGETC,,, "I1:-:Unit=I*,C=A1w") +DEFIMP (FGETC_subr, "FGETC_subr", FGETC,,, "--:-:Unit=I*,C=A1w,Status=?I1w") DEFIMP (FLUSH, "FLUSH", ,,, "--:-:Unit=?I*") -DEFIMP (FNUM, "FNUM", FNUM,,, "I1:-:Unit=I*") -DEFIMP (FPUT_func, "FPUT_func", FPUT,,, "I1:-:C=A1") -DEFIMP (FPUT_subr, "FPUT_subr", FPUT,,, "--:-:C=A1,Status=?I1w") -DEFIMP (FPUTC_func, "FPUTC_func", FPUTC,,, "I1:-:Unit=I*,C=A1") -DEFIMP (FPUTC_subr, "FPUTC_subr", FPUTC,,, "--:-:Unit=I*,C=A1,Status=?I1w") +DEFIMP (FNUM, "FNUM", FNUM,,, "I1:-:Unit=I*") +DEFIMP (FPUT_func, "FPUT_func", FPUT,,, "I1:-:C=A1") +DEFIMP (FPUT_subr, "FPUT_subr", FPUT,,, "--:-:C=A1,Status=?I1w") +DEFIMP (FPUTC_func, "FPUTC_func", FPUTC,,, "I1:-:Unit=I*,C=A1") +DEFIMP (FPUTC_subr, "FPUTC_subr", FPUTC,,, "--:-:Unit=I*,C=A1,Status=?I1w") DEFIMP (FSEEK, "FSEEK", FSEEK,,, "--:-:Unit=I*,Offset=I*,Whence=I*,ErrLab=?g*") -DEFIMP (FSTAT_func, "FSTAT_func", FSTAT,,, "I1:-:Unit=I*,SArray=I1(13)w") -DEFIMP (FSTAT_subr, "FSTAT_subr", FSTAT,,, "--:-:Unit=I*,SArray=I1(13)w,Status=?I1w") +DEFIMP (FSTAT_func, "FSTAT_func", FSTAT,,, "I1:-:Unit=I*,SArray=I1(13)w") +DEFIMP (FSTAT_subr, "FSTAT_subr", FSTAT,,, "--:-:Unit=I*,SArray=I1(13)w,Status=?I1w") DEFIMP (FTELL_func, "FTELL_func", FTELL,,, "I1:-:Unit=I*") DEFIMP (FTELL_subr, "FTELL_subr", FTELL,,, "--:-:Unit=I*,Offset=I1w") DEFIMP (GERROR, "GERROR", GERROR,,, "--:-:Message=A1w") @@ -3278,7 +3278,7 @@ DEFIMP (GETLOG, "GETLOG", GETLOG,,, "--:-:Login=A1w") DEFIMP (GETPID, "GETPID", GETPID,,, "I1:-:") DEFIMP (GETUID, "GETUID", GETUID,,, "I1:-:") DEFIMP (GETENV, "GETENV", GETENV,,, "--:-:Name=A1,Value=A1w") -DEFIMP (GMTIME, "GMTIME", GMTIME,,, "--:-:STime=I1,TArray=I1(9)w") +DEFIMP (GMTIME, "GMTIME", GMTIME,,, "--:-:STime=I1,TArray=I1(9)w") DEFIMP (HOSTNM_func, "HOSTNM_func", HOSTNM,,, "I1:-:Name=A1w") DEFIMP (HOSTNM_subr, "HOSTNM_subr", HOSTNM,,, "--:-:Name=A1w,Status=?I1w") DEFIMP (IACHAR, "IACHAR", ,,, "I1:-:C=A*") @@ -3287,63 +3287,63 @@ DEFIMP (IARGC, "IARGC", IARGC,,, "I1:-:") DEFIMP (IBCLR, "IBCLR", ,,, "I=:0:I=I*,Pos=I*") DEFIMP (IBITS, "IBITS", ,,, "I=:0:I=I*,Pos=I*,Len=I*") DEFIMP (IBSET, "IBSET", ,,, "I=:0:I=I*,Pos=I*") -DEFIMP (IDATE_unix, "IDATE_unix", IDATE,,, "--:-:TArray=I1(3)w") -DEFIMP (IDATE_vxt, "IDATE_vxt", VXTIDATE,,, "--:-:M=I1w,D=I1w,Y=I1w") +DEFIMP (IDATE_unix, "IDATE_unix", IDATE,,, "--:-:TArray=I1(3)w") +DEFIMP (IDATE_vxt, "IDATE_vxt", VXTIDATE,,, "--:-:M=I1w,D=I1w,Y=I1w") DEFIMP (IEOR, "IEOR", ,,, "I=:*:I=I*,J=I*") DEFIMP (IOR, "IOR", ,,, "I=:*:I=I*,J=I*") -DEFIMP (IERRNO, "IERRNO", IERRNO,,, "I1:-:") +DEFIMP (IERRNO, "IERRNO", IERRNO,,, "I1:-:") DEFIMP (IMAGPART, "IMAGPART", ,,, "R=:0:Z=C*") DEFIMP (INT2, "INT2", ,,, "I6:-:A=N*") DEFIMP (INT8, "INT8", ,,, "I2:-:A=N*") -DEFIMP (IRAND, "IRAND", IRAND,,, "I1:-:Flag=?I*") -DEFIMP (ISATTY, "ISATTY", ISATTY,,, "L1:-:Unit=I*") +DEFIMP (IRAND, "IRAND", IRAND,,, "I1:-:Flag=?I*") +DEFIMP (ISATTY, "ISATTY", ISATTY,,, "L1:-:Unit=I*") DEFIMP (ISHFT, "ISHFT", ,,, "I=:0:I=I*,Shift=I*") DEFIMP (ISHFTC, "ISHFTC", ,,, "I=:0:I=I*,Shift=I*,Size=I*") -DEFIMP (ITIME, "ITIME", ITIME,,, "--:-:TArray=I1(3)w") -DEFIMP (KILL_func, "KILL_func", KILL,,, "I1:-:Pid=I*,Signal=I*") -DEFIMP (KILL_subr, "KILL_subr", KILL,,, "--:-:Pid=I*,Signal=I*,Status=?I1w") -DEFIMP (LINK_func, "LINK_func", LINK,,, "I1:-:Path1=A1,Path2=A1") -DEFIMP (LINK_subr, "LINK_subr", LINK,,, "--:-:Path1=A1,Path2=A1,Status=?I1w") -DEFIMP (LNBLNK, "LNBLNK", LNBLNK,,, "I1:-:String=A1") +DEFIMP (ITIME, "ITIME", ITIME,,, "--:-:TArray=I1(3)w") +DEFIMP (KILL_func, "KILL_func", KILL,,, "I1:-:Pid=I*,Signal=I*") +DEFIMP (KILL_subr, "KILL_subr", KILL,,, "--:-:Pid=I*,Signal=I*,Status=?I1w") +DEFIMP (LINK_func, "LINK_func", LINK,,, "I1:-:Path1=A1,Path2=A1") +DEFIMP (LINK_subr, "LINK_subr", LINK,,, "--:-:Path1=A1,Path2=A1,Status=?I1w") +DEFIMP (LNBLNK, "LNBLNK", LNBLNK,,, "I1:-:String=A1") DEFIMP (LONG, "LONG", ,,, "I1:-:A=I6") -DEFIMP (LSTAT_func, "LSTAT_func", LSTAT,,, "I1:-:File=A1,SArray=I1(13)w") -DEFIMP (LSTAT_subr, "LSTAT_subr", LSTAT,,, "--:-:File=A1,SArray=I1(13)w,Status=?I1w") -DEFIMP (LTIME, "LTIME", LTIME,,, "--:-:STime=I1,TArray=I1(9)w") +DEFIMP (LSTAT_func, "LSTAT_func", LSTAT,,, "I1:-:File=A1,SArray=I1(13)w") +DEFIMP (LSTAT_subr, "LSTAT_subr", LSTAT,,, "--:-:File=A1,SArray=I1(13)w,Status=?I1w") +DEFIMP (LTIME, "LTIME", LTIME,,, "--:-:STime=I1,TArray=I1(9)w") DEFIMP (LOC, "LOC", ,,, "I7:-:Entity=-*&&") DEFIMP (LSHIFT, "LSHIFT", ,,, "I=:0:I=I*,Shift=I*") -DEFIMP (MCLOCK, "MCLOCK", MCLOCK,,, "I1:-:") -DEFIMP (MCLOCK8, "MCLOCK8", MCLOCK,,, "I2:-:") +DEFIMP (MCLOCK, "MCLOCK", MCLOCK,,, "I1:-:") +DEFIMP (MCLOCK8, "MCLOCK8", MCLOCK,,, "I2:-:") DEFIMP (MVBITS, "MVBITS", ,,, "--:-:From=I*,FromPos=I*,Len=I*,TO=IAx,ToPos=I*") DEFIMP (NOT, "NOT", ,,, "I=:0:I=I*") DEFIMP (OR, "OR", ,,, "B=:*:I=B*,J=B*") DEFIMP (PERROR, "PERROR", PERROR,,, "--:-:String=A1") -DEFIMP (RAND, "RAND", RAND,,, "R1:-:Flag=?I*") +DEFIMP (RAND, "RAND", RAND,,, "R1:-:Flag=?I*") DEFIMP (REALPART, "REALPART", ,,, "R=:0:Z=C*") -DEFIMP (RENAME_func, "RENAME_func", RENAME,,, "I1:-:Path1=A1,Path2=A1") -DEFIMP (RENAME_subr, "RENAME_subr", RENAME,,, "--:-:Path1=A1,Path2=A1,Status=?I1w") +DEFIMP (RENAME_func, "RENAME_func", RENAME,,, "I1:-:Path1=A1,Path2=A1") +DEFIMP (RENAME_subr, "RENAME_subr", RENAME,,, "--:-:Path1=A1,Path2=A1,Status=?I1w") DEFIMP (RSHIFT, "RSHIFT", ,,, "I=:0:I=I*,Shift=I*") -DEFIMP (SECNDS, "SECNDS", SECNDS,,, "R1:-:T=R1") -DEFIMP (SECOND_func, "SECOND_func", SECOND,SECOND,, "R1:-:") -DEFIMP (SECOND_subr, "SECOND_subr", SECOND,,, "--:-:Seconds=R1w") +DEFIMP (SECNDS, "SECNDS", SECNDS,,, "R1:-:T=R1") +DEFIMP (SECOND_func, "SECOND_func", SECOND,SECOND,, "R1:-:") +DEFIMP (SECOND_subr, "SECOND_subr", SECOND,,, "--:-:Seconds=R*w") DEFIMP (SHORT, "SHORT", ,,, "I6:-:A=I*") DEFIMP (SIGNAL_func, "SIGNAL_func", L_SIGNAL,,, "I7:-:Number=I*,Handler=s*") DEFIMP (SIGNAL_subr, "SIGNAL_subr", L_SIGNAL,,, "--:-:Number=I*,Handler=s*,Status=?I7w") DEFIMP (SLEEP, "SLEEP", SLEEP,,, "--:-:Seconds=I1") -DEFIMP (SRAND, "SRAND", SRAND,,, "--:-:Seed=I*") -DEFIMP (STAT_func, "STAT_func", STAT,,, "I1:-:File=A1,SArray=I1(13)w") -DEFIMP (STAT_subr, "STAT_subr", STAT,,, "--:-:File=A1,SArray=I1(13)w,Status=?I1w") -DEFIMP (SYMLNK_func, "SYMLNK_func", SYMLNK,,, "I1:-:Path1=A1,Path2=A1") -DEFIMP (SYMLNK_subr, "SYMLNK_subr", SYMLNK,,, "--:-:Path1=A1,Path2=A1,Status=?I1w") +DEFIMP (SRAND, "SRAND", SRAND,,, "--:-:Seed=I*") +DEFIMP (STAT_func, "STAT_func", STAT,,, "I1:-:File=A1,SArray=I1(13)w") +DEFIMP (STAT_subr, "STAT_subr", STAT,,, "--:-:File=A1,SArray=I1(13)w,Status=?I1w") +DEFIMP (SYMLNK_func, "SYMLNK_func", SYMLNK,,, "I1:-:Path1=A1,Path2=A1") +DEFIMP (SYMLNK_subr, "SYMLNK_subr", SYMLNK,,, "--:-:Path1=A1,Path2=A1,Status=?I1w") DEFIMP (SYSTEM_func, "SYSTEM_func", SYSTEM,SYSTEM,SYSTEM,"I1:-:Command=A1") DEFIMP (SYSTEM_subr, "SYSTEM_subr", SYSTEM,,, "--:-:Command=A1,Status=?I1w") DEFIMP (SYSTEM_CLOCK, "SYSTEM_CLOCK", SYSTEM_CLOCK,,, "--:-:Count=I1w,Rate=I1w,Max=I1w") DEFIMP (TIME8, "TIME8", TIME,,, "I2:-:") DEFIMP (TIME_unix, "TIME_unix", TIME,,, "I1:-:") DEFIMP (TIME_vxt, "TIME_vxt", VXTTIME,,, "--:-:Time=A1[8]w") -DEFIMP (TTYNAM_func, "TTYNAM_func", TTYNAM,,, "A1*:-:Unit=I*") -DEFIMP (TTYNAM_subr, "TTYNAM_subr", TTYNAM,,, "--:-:Name=A1w,Unit=I*") -DEFIMP (UMASK_func, "UMASK_func", UMASK,,, "I1:-:Mask=I*") -DEFIMP (UMASK_subr, "UMASK_subr", UMASK,,, "--:-:Mask=I*,Old=?I1w") +DEFIMP (TTYNAM_func, "TTYNAM_func", TTYNAM,,, "A1*:-:Unit=I*") +DEFIMP (TTYNAM_subr, "TTYNAM_subr", TTYNAM,,, "--:-:Name=A1w,Unit=I*") +DEFIMP (UMASK_func, "UMASK_func", UMASK,,, "I1:-:Mask=I*") +DEFIMP (UMASK_subr, "UMASK_subr", UMASK,,, "--:-:Mask=I*,Old=?I1w") DEFIMP (UNLINK_func, "UNLINK_func", UNLINK,,, "I1:-:File=A1") DEFIMP (UNLINK_subr, "UNLINK_subr", UNLINK,,, "--:-:File=A1,Status=?I1w") DEFIMP (XOR, "XOR", ,,, "B=:*:I=B*,J=B*") diff --git a/gcc/f/lang-options.h b/gcc/f/lang-options.h index 7b031dcc57a..51082fb837f 100644 --- a/gcc/f/lang-options.h +++ b/gcc/f/lang-options.h @@ -1,5 +1,5 @@ /* lang-options.h file for Fortran - Copyright (C) 1995-1998 Free Software Foundation, Inc. + Copyright (C) 1995-1997 Free Software Foundation, Inc. Contributed by James Craig Burley (burley@gnu.ai.mit.edu). This file is part of GNU Fortran. @@ -103,6 +103,10 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA "-fcase-upper", "-fcase-lower", "-fcase-preserve", + "-fbadu77-intrinsics-delete", + "-fbadu77-intrinsics-hide", + "-fbadu77-intrinsics-disable", + "-fbadu77-intrinsics-enable", "-fdcp-intrinsics-delete", "-fdcp-intrinsics-hide", "-fdcp-intrinsics-disable", @@ -111,18 +115,14 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA "-ff2c-intrinsics-hide", "-ff2c-intrinsics-disable", "-ff2c-intrinsics-enable", - "-fgnu-intrinsics-delete", - "-fgnu-intrinsics-hide", - "-fgnu-intrinsics-disable", - "-fgnu-intrinsics-enable", - "-fbadu77-intrinsics-delete", - "-fbadu77-intrinsics-hide", - "-fbadu77-intrinsics-disable", - "-fbadu77-intrinsics-enable", "-ff90-intrinsics-delete", "-ff90-intrinsics-hide", "-ff90-intrinsics-disable", "-ff90-intrinsics-enable", + "-fgnu-intrinsics-delete", + "-fgnu-intrinsics-hide", + "-fgnu-intrinsics-disable", + "-fgnu-intrinsics-enable", "-fmil-intrinsics-delete", "-fmil-intrinsics-hide", "-fmil-intrinsics-disable", diff --git a/gcc/f/news.texi b/gcc/f/news.texi index 2853dfd13d1..00c7c5cea7c 100644 --- a/gcc/f/news.texi +++ b/gcc/f/news.texi @@ -5,7 +5,7 @@ @c The text of this file appears in the file BUGS @c in the G77 distribution, as well as in the G77 manual. -@c 1997-10-10 +@c 1998-03-16 @ifclear NEWSONLY @node News @@ -17,39 +17,59 @@ Changes made to recent versions of GNU Fortran are listed below, with the most recent version first. -The changes are generally listed with code-generation -bugs first, followed by compiler crashes involving valid -code, new features, fixes to existing features, new -diagnostics, internal improvements, and miscellany. +The changes are generally listed in order: + +@enumerate +@item +Code-generation and run-time-library bugs + +@item +Compiler and run-time-library crashes involving valid code + +@item +New features + +@item +Fixes and enhancements to existing features + +@item +New diagnostics + +@item +Internal improvements + +@item +Miscellany +@end enumerate + This order is not strict---for example, some items involve a combination of these elements. @heading In 0.5.22: @itemize @bullet @item -Fix a compiler crash on statements such as -@samp{PRINT *, (REAL(Z(I)),I=1,2)}, where -@samp{Z} is @code{DOUBLE COMPLEX}. +Fix code generation for iterative @code{DO} loops that +have one or more references to the iteration variable, +or to aliases of it, in their control expressions. +For example, @samp{DO 10 J=2,J} now is compiled correctly. +@cindex DNRM2 +@cindex stack, 387 coprocessor +@cindex ix86 +@cindex -O2 @item -Improve diagnostic messages from @code{libf2c} -so it is more likely that the printing of the -active format string is limited to the string, -with no trailing garbage being printed. +Fix a code-generation bug that afflicted +Intel x86 targets when @samp{-O2} was specified +compiling, for example, an old version of +the @samp{DNRM2} routine. -(Unlike @code{f2c}, @code{g77} does not append -a null byte to its compiled form of every -format string specified via a @code{FORMAT} statement. -However, @code{f2c} would exhibit the problem -anyway for a statement like @samp{PRINT '(I)garbage', 1} -by printing @samp{(I)garbage} as the format string.) +The x87 coprocessor stack was being +mismanaged in cases involving assigned @code{GOTO} +and @code{ASSIGN}. @item -Improve compilation of FORMAT expressions so that -a null byte is appended to the last operand if it -is a constant. -This provides a cleaner run-time diagnostic as provided -by @code{libf2c} for statements like @samp{PRINT '(I1', 42}. +Fix @code{DTime} intrinsic so as not to truncate +results to integer values (on some systems). @item Fix @code{SIGNAL} intrinsic so it offers portable @@ -57,22 +77,65 @@ support for 64-bit systems (such as Digital Alphas running GNU/Linux). @item +Fix run-time crash involving @code{NAMELIST} on 64-bit +machines such as Alphas. + +@item +Fix @code{g77} version of @code{libf2c} so it no longer +produces a spurious @samp{I/O recursion} diagnostic at run time +when an I/O operation (such as @samp{READ *,I}) is interrupted +in a manner that causes the program to be terminated +via the @samp{f_exit} routine (such as via @kbd{C-c}). + +@item +Fix @code{g77} crash triggered by @code{CASE} statement with +an omitted lower or upper bound. + +@item +Fix @code{g77} crash compiling references to @code{CPU_Time} +intrinsic. + +@item +Fix @code{g77} crash +(or apparently infinite run-time) +when compiling certain complicated expressions +involving @code{COMPLEX} arithmetic +(especially multiplication). + +@item +Fix @code{g77} crash on statements such as +@samp{PRINT *, (REAL(Z(I)),I=1,2)}, where +@samp{Z} is @code{DOUBLE COMPLEX}. + +@item +Fix a @code{g++} crash. + +@item Support @samp{FORMAT(I<@var{expr}>)} when @var{expr} is a compile-time constant @code{INTEGER} expression. @item -Fix code generation for iterative @code{DO} loops that -have one or more references to the iteration variable, -or to aliases of it, in their control expressions. -For example, @samp{DO 10 J=2,J} now is compiled correctly. +Fix @code{g77} @samp{-g} option so procedures that +use @samp{ENTRY} can be stepped through, line by line, +in @code{gdb}. @item -Fix a compiler crash involving optimization of -certain complicated expressions involving @code{COMPLEX} -arithmetic (especially multiplication). +Fix a profiling-related bug in @code{gcc} back end for +Intel x86 architecture. + +@item +Allow any @code{REAL} argument to intrinsics +@code{Second} and @code{CPU_Time}. + +@item +Allow any numeric argument to intrinsics +@code{Int2} and @code{Int8}. @item -Fix an internal error compiling the @code{Cpu_Time} intrinsic. +Use @code{tempnam}, if available, to open scratch files +(as in @samp{OPEN(STATUS='SCRATCH')} +so that the @code{TMPDIR} environment variable, +if present, is used. @item Rename the @code{gcc} keyword @code{restrict} to @@ -82,9 +145,18 @@ Support for @code{restrict} is now more like support for @code{complex}. @item -Fix @code{DTime} intrinsic so as not to truncate -results to integer values (on some systems) and allow general numeric -args for the @code{Int2} and @code{Int8} intrinsics. +Fix @samp{-fpedantic} to not reject procedure invocations +such as @samp{I=J()} and @samp{CALL FOO()}. + +@item +Fix @samp{-fugly-comma} to affect invocations of +only external procedures. +Restore rejection of gratuitous trailing omitted +arguments to intrinsics, as in @samp{I=MAX(3,4,,)}. + +@item +Fix compiler so it accepts @samp{-fgnu-intrinsics-*} and +@samp{-fbadu77-intrinsics-*} options. @item Improve diagnostic messages from @code{libf2c} @@ -92,7 +164,7 @@ so it is more likely that the printing of the active format string is limited to the string, with no trailing garbage being printed. -(Unlike @code{f2c}, @code{g77} does not append +(Unlike @code{f2c}, @code{g77} did not append a null byte to its compiled form of every format string specified via a @code{FORMAT} statement. However, @code{f2c} would exhibit the problem @@ -100,7 +172,29 @@ anyway for a statement like @samp{PRINT '(I)garbage', 1} by printing @samp{(I)garbage} as the format string.) @item +Improve compilation of FORMAT expressions so that +a null byte is appended to the last operand if it +is a constant. +This provides a cleaner run-time diagnostic as provided +by @code{libf2c} for statements like @samp{PRINT '(I1', 42}. + +@item +Fix various crashes involving code with diagnosed errors. + +@item +Fix cross-compilation bug when configuring @code{libf2c}. + +@item +Improve diagnostics. + +@item +Improve documentation and indexing. + +@item Upgrade to @code{libf2c} as of 1997-09-23. +This fixes a formatted-I/O bug that afflicted +64-bit systems with 32-bit integers +(such as Digital Alpha running GNU/Linux). @end itemize @heading In 0.5.21: diff --git a/gcc/f/std.c b/gcc/f/std.c index dac22817dab..8c2adfb74f8 100644 --- a/gcc/f/std.c +++ b/gcc/f/std.c @@ -1,5 +1,5 @@ /* std.c -- Implementation File (module.c template V1.0) - Copyright (C) 1995, 1996 Free Software Foundation, Inc. + Copyright (C) 1995-1998 Free Software Foundation, Inc. Contributed by James Craig Burley (burley@gnu.ai.mit.edu). This file is part of GNU Fortran. diff --git a/gcc/f/ste.c b/gcc/f/ste.c index f7168f0dfdd..e09654232b6 100644 --- a/gcc/f/ste.c +++ b/gcc/f/ste.c @@ -1,5 +1,5 @@ /* ste.c -- Implementation File (module.c template V1.0) - Copyright (C) 1995, 1996 Free Software Foundation, Inc. + Copyright (C) 1995-1998 Free Software Foundation, Inc. Contributed by James Craig Burley (burley@gnu.ai.mit.edu). This file is part of GNU Fortran. diff --git a/gcc/f/target.c b/gcc/f/target.c index 8dfe68d7782..638a71ae3dd 100644 --- a/gcc/f/target.c +++ b/gcc/f/target.c @@ -1,5 +1,5 @@ /* target.c -- Implementation File (module.c template V1.0) - Copyright (C) 1995-1997 Free Software Foundation, Inc. + Copyright (C) 1995-1998 Free Software Foundation, Inc. Contributed by James Craig Burley (burley@gnu.ai.mit.edu). This file is part of GNU Fortran. diff --git a/gcc/f/version.c b/gcc/f/version.c index 9cbabbdb590..6fbc1caa87d 100644 --- a/gcc/f/version.c +++ b/gcc/f/version.c @@ -31,4 +31,4 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "version.h" -char *ffe_version_string = "0.5.22-19970929"; +char *ffe_version_string = "0.5.22-release"; |