Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
d9b9ee64
Commit
d9b9ee64
authored
26 years ago
by
Dave Love
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Rebuilt.
From-SVN: r21398
parent
7935f0d5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
262 additions
and
45 deletions
+262
-45
gcc/f/BUGS
+90
-43
gcc/f/INSTALL
+0
-0
gcc/f/NEWS
+172
-2
No files found.
gcc/f/BUGS
View file @
d9b9ee64
...
...
@@ -15,26 +15,46 @@ separating them out.
For information on bugs that might afflict people who configure,
port, build, and install `g77', *Note Problems Installing::.
* `g77''s version of `gcc', and probably `g77' itself, cannot be
reliably used with the `-O2' option (or higher) on Digital
Semiconductor Alpha AXP machines. The problem is most immediately
noticed in differences discovered by `make compare' following a
bootstrap build using `-O2'. It also manifests itself as a
failure to compile `DATA' statements such as `DATA R/7./'
correctly; in this case, `R' might be initialized to `4.0'.
* `g77' sometimes crashes when compiling code containing the
construct `CMPLX(0.)' or similar. This is a `gcc' back-end bug.
It can be worked around using `-fno-emulate-complex', though that
might trigger other, older bugs. Compiling without optimization
is another work-around.
Until this bug is fixed, use only `-O1' or no optimization.
Fixed in `egcs' 1.1.
* Automatic arrays aren't working on HP-UX systems, at least in
HP-UX version 10.20. Writing into them apparently causes
over-writing of statically declared data in the main program.
This probably means the arrays themselves are being
under-allocated, or pointers to them being improperly handled,
e.g. not passed to other procedures as they should be.
* Some Fortran code has been found to be miscompiled by `g77' built
on `gcc' version 2.8.1 on m68k-next-nextstep3 configurations when
using the `-O2' option. Even a C function is known to miscompile
on that configuration when using the `-O2 -funroll-loops' options.
Fixed in `egcs'.
* A code-generation bug afflicts Intel x86 targets when `-O2' is
specified compiling, for example, an old version of the `DNRM2'
routine. The x87 coprocessor stack is being mismanaged in cases
where assigned `GOTO' and `ASSIGN' are involved.
Fixed in `egcs' version 1.1.
* A compiler crash, or apparently infinite run time, can result when
compiling complicated expressions involving `COMPLEX' arithmetic
(especially multiplication).
Fixed in `egcs' version 1.1.
* Something about `g77''s straightforward handling of label
references and definitions sometimes prevents the GBE from
unrolling loops. Until this is solved, try inserting or removing
`CONTINUE' statements as the terminal statement, using the `END DO'
form instead, and so on. (Probably improved, but not wholly
fixed, in 0.5.21.)
* The `g77' command itself should more faithfully process options
the way the `gcc' command does. For example, `gcc' accepts
abbreviated forms of long options, `g77' generally doesn't.
form instead, and so on.
* Some confusion in diagnostics concerning failing `INCLUDE'
statements from within `INCLUDE''d or `#include''d files.
...
...
@@ -117,37 +137,12 @@ port, build, and install `g77', *Note Problems Installing::.
information might even lead to all relevant products working
together properly sooner.
* `g77' currently inserts needless padding for things like `COMMON
A,IPAD' where `A' is `CHARACTER*1' and `IPAD' is `INTEGER(KIND=1)'
on machines like x86, because the back end insists that `IPAD' be
aligned to a 4-byte boundary, but the processor has no such
requirement (though it's good for performance).
It is possible that this is not a real bug, and could be considered
a performance feature, but it might be important to provide the
ability to Fortran code to specify minimum padding for aggregate
areas such as common blocks--and, certainly, there is the
potential, with the current setup, for interface differences in
the way such areas are laid out between `g77' and other compilers.
* `g77' doesn't work perfectly on 64-bit configurations such as the
Alpha. This problem is expected to be largely resolved as of
version 0.5.20, and further addressed by 0.5.21. Version 0.6
should solve most or all related problems (such as 64-bit machines
other than Digital Semiconductor ("DEC") Alphas).
Digital Semiconductor ("DEC") Alpha.
One known bug that causes a compile-time crash occurs when
compiling code such as the following with optimization:
SUBROUTINE CRASH (TEMP)
INTEGER*2 HALF(2)
REAL TEMP
HALF(1) = NINT (TEMP)
END
It is expected that a future version of `g77' will have a fix for
this problem, almost certainly by the time `g77' supports the
forthcoming version 2.8.0 of `gcc'.
This problem is largely resolved as of version 0.5.23. Version
0.6 should solve most or all remaining problems (such as
cross-compiling involving 64-bit machines).
* Maintainers of gcc report that the back end definitely has "broken"
support for `COMPLEX' types. Based on their input, it seems many
...
...
@@ -169,3 +164,55 @@ port, build, and install `g77', *Note Problems Installing::.
in the gcc back end, and it apparently occurs only when compiling
sufficiently complicated functions *without* the `-O' option.
Fixed in `egcs' version 1.1.
* `g77' currently inserts needless padding for things like `COMMON
A,IPAD' where `A' is `CHARACTER*1' and `IPAD' is `INTEGER(KIND=1)'
on machines like x86, because the back end insists that `IPAD' be
aligned to a 4-byte boundary, but the processor has no such
requirement (though it is usually good for performance).
The `gcc' back end needs to provide a wider array of
specifications of alignment requirements and preferences for
targets, and front ends like `g77' should take advantage of this
when it becomes available.
* The x86 target's `-malign-double' option no longer reliably aligns
double-precision variables and arrays when they are placed in the
stack frame.
This can significantly reduce the performance of some applications,
even on a run-to-run basis (that is, performance measurements can
vary fairly widely depending on whether frequently used variables
are properly aligned, and that can change from one program run to
the next, even from one procedure call to the next).
Versions 0.5.22 and earlier of `g77' included a patch to `gcc'
that enabled this, but that patch has been deemed an improper
(probably buggy) one for version 2.8 of `gcc' and for `egcs'.
Note that version 1.1 of `egcs' aligns double-precision variables
and arrays when they are in static storage even if
`-malign-double' is not specified.
There is ongoing investigation into how to make `-malign-double'
work properly, also into how to make it unnecessary to get all
double-precision variables and arrays aligned when such alignment
would not violate the relevant specifications for processor and
inter-procedural interfaces.
For a suite of programs to test double-precision alignment, see
`ftp://alpha.gnu.org/gnu/g77/align/'.
* The `libf2c' routines that perform some run-time arithmetic on
`COMPLEX' operands were modified circa version 0.5.20 of `g77' to
work properly even in the presence of aliased operands.
While the `g77' and `netlib' versions of `libf2c' differ on how
this is accomplished, the main differences are that we believe the
`g77' version works properly even in the presence of *partially*
aliased operands.
However, these modifications have reduced performance on targets
such as x86, due to the extra copies of operands involved.
This diff is collapsed.
Click to expand it.
gcc/f/INSTALL
View file @
d9b9ee64
This diff is collapsed.
Click to expand it.
gcc/f/NEWS
View file @
d9b9ee64
...
...
@@ -11,9 +11,10 @@ with the most recent version first.
The changes are generally listed in order:
1. Code-generation and run-time-library bugs
1. Code-generation and run-time-library bug
-fixe
s
2. Compiler and run-time-library crashes involving valid code
2. Compiler and run-time-library crashes involving valid code that
have been fixed
3. New features
...
...
@@ -28,6 +29,175 @@ with the most recent version first.
This order is not strict--for example, some items involve a
combination of these elements.
In `egcs' 1.1:
==============
* `g77' no longer produces incorrect code and initial values for
`EQUIVALENCE' and `COMMON' aggregates that, due to "unnatural"
ordering of members vis-a-vis their types, require initial padding.
* `g77' no longer crashes when compiling code containing
specification statements such as `INTEGER(KIND=7) PTR'.
* `g77' now treats `%LOC(EXPR)' and `LOC(EXPR)' as "ordinary"
expressions when they are used as arguments in procedure calls.
This change applies only to global (filewide) analysis, making it
consistent with how `g77' actually generates code for these cases.
Previously, `g77' treated these expressions as denoting special
"pointer" arguments for the purposes of filewide analysis.
* The `g77' driver now ensures that `-lg2c' is specified in the link
phase prior to any occurrence of `-lm'. This prevents
accidentally linking to a routine in the SunOS4 `-lm' library when
the generated code wants to link to the one in `libf2c' (`libg2c').
* `g77' emits more debugging information when `-g' is used.
This new information allows, for example, `which __g77_length_a'
to be used in `gdb' to determine the type of the phantom length
argument supplied with `CHARACTER' variables.
This information pertains to internally-generated type, variable,
and other information, not to the longstanding deficiencies
vis-a-vis `COMMON' and `EQUIVALENCE'.
* The F90 `DATE_AND_TIME' intrinsic now is supported.
* The F90 `SYSTEM_CLOCK' intrinsic allows the optional arguments
(except for the `Count' argument) to be omitted.
* Upgrade to `libf2c' as of 1998-06-18.
* Improve documentation and indexing.
In 0.5.23:
==========
* This release contains several regressions against version 0.5.22
of `g77', due to using the "vanilla" `gcc' back end instead of
patching it to fix a few bugs and improve performance in a few
cases.
*Note Actual Bugs We Haven't Fixed Yet: Actual Bugs, available in
plain-text format in `gcc/f/BUGS', for information on the known
bugs in this version, including the regressions.
Features that have been dropped from this version of `g77' due to
their being implemented via `g77'-specific patches to the `gcc'
back end in previous releases include:
- Support for `__restrict__' keyword, the options
`-fargument-alias', `-fargument-noalias', and
`-fargument-noalias-global', and the corresponding
alias-analysis code.
(Version 1.0.1 of `egcs' has the alias-analysis code, but not
the `__restrict__' keyword. `egcs' `g77' users benefit from
the alias-analysis code despite the lack of the
`__restrict__' keyword, which is a C-language construct.)
- Support for the GNU compiler options `-fmove-all-movables',
`-freduce-all-givs', and `-frerun-loop-opt'.
(Version 1.0.1 of `egcs' supports these options. `g77' users
of `egcs' benefit from them even if they are not explicitly
specified, because the defaults are optimized for `g77'
users.)
- Support for the `-W' option warning about integer division by
zero.
- The Intel x86-specific option `-malign-double' applying to
stack-allocated data as well as statically-allocate data.
Note that the `gcc/f/gbe/' subdirectory has been removed from this
distribution as a result of `g77' no longer including patches for
the `gcc' back end.
* Fix bugs in the `libU77' intrinsic `HostNm' that wrote one byte
beyond the end of its `CHARACTER' argument, and in the `libU77'
intrinsics `GMTime' and `LTime' that overwrote their arguments.
* Support `gcc' version 2.8, and remove support for prior versions
of `gcc'.
* Remove support for the `--driver' option, as `g77' now does all
the driving, just like `gcc'.
* `CASE DEFAULT' no longer crashes `g77'.
* Valid combinations of `EXTERNAL', passing that external as a dummy
argument without explicitly giving it a type, and, in a subsequent
program unit, referencing that external as an external function
with a different type no longer crash `g77'.
* `g77' no longer installs the `f77' command and `f77.1' man page in
the `/usr' or `/usr/local' heirarchy, even if the `f77-install-ok'
file exists in the source or build directory. See the
installation documentation for more information.
* `g77' no longer installs the `libf2c.a' library and `f2c.h'
include file in the `/usr' or `/usr/local' heirarchy, even if the
`f2c-install-ok' or `f2c-exists-ok' files exist in the source or
build directory. See the installation documentation for more
information.
* The `libf2c.a' library produced by `g77' has been renamed to
`libg2c.a'. It is installed only in the `gcc' "private" directory
heirarchy, `gcc-lib'. This allows system administrators and users
to choose which version of the `libf2c' library from `netlib' they
wish to use on a case-by-case basis. See the installation
documentation for more information.
* The `f2c.h' include (header) file produced by `g77' has been
renamed to `g2c.h'. It is installed only in the `gcc' "private"
directory heirarchy, `gcc-lib'. This allows system administrators
and users to choose which version of the include file from
`netlib' they wish to use on a case-by-case basis. See the
installation documentation for more information.
* The `g77' command now expects the run-time library to be named
`libg2c.a' instead of `libf2c.a', to ensure that a version other
than the one built and installed as part of the same `g77' version
is picked up.
* The `-Wunused' option no longer issues a spurious warning about
the "master" procedure generated by `g77' for procedures
containing `ENTRY' statements.
* `g77''s version of `libf2c' separates out the setting of global
state (such as command-line arguments and signal handling) from
`main.o' into distinct, new library archive members.
This should make it easier to write portable applications that
have their own (non-Fortran) `main()' routine properly set up the
`libf2c' environment, even when `libf2c' (now `libg2c') is a
shared library.
* During the configuration and build process, `g77' creates
subdirectories it needs only as it needs them, thus avoiding
unnecessary creation of, for example, `stage1/f/runtime' when
doing a non-bootstrap build. Other cleaning up of the
configuration and build process has been performed as well.
* `install-info' now used to update the directory of Info
documentation to contain an entry for `g77' (during installation).
* Some diagnostics have been changed from warnings to errors, to
prevent inadvertent use of the resulting, probably buggy, programs.
These mostly include diagnostics about use of unsupported features
in the `OPEN', `INQUIRE', `READ', and `WRITE' statements, and
about truncations of various sorts of constants.
* Improve documentation and indexing.
* Upgrade to `libf2c' as of 1998-04-20.
This should fix a variety of problems, including those involving
some uses of the `T' format specifier, and perhaps some build
(porting) problems as well.
In 0.5.22:
==========
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment