Commit d8955e17 by Craig Burley Committed by Craig Burley

Make -fno-emulate-complex the default

From-SVN: r26161
parent 0ea78edb
Sat Apr 3 23:29:33 1999 Craig Burley <craig@jcb-sc.com>
* bugs.texi, g77.texi, lang-options.h, news.texi, top.c:
Make -fno-emulate-complex the default, as COMPLEX support
in the back end is now believed to be working.
* version.c: Bump version.
Fri Apr 2 13:33:16 1999 Craig Burley <craig@jcb-sc.com> Fri Apr 2 13:33:16 1999 Craig Burley <craig@jcb-sc.com>
* g77.texi: -malign-double now works. * g77.texi: -malign-double now works.
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
@c in the standalone derivations of this file (e.g. BUGS). @c in the standalone derivations of this file (e.g. BUGS).
@set copyrights-bugs 1995-1999 @set copyrights-bugs 1995-1999
@set last-update-bugs 1999-03-15 @set last-update-bugs 1999-04-03
@include root.texi @include root.texi
...@@ -247,23 +247,6 @@ This problem is largely resolved as of version 0.5.23. ...@@ -247,23 +247,6 @@ This problem is largely resolved as of version 0.5.23.
Version 0.6 should solve most or all remaining problems Version 0.6 should solve most or all remaining problems
(such as cross-compiling involving 64-bit machines). (such as cross-compiling involving 64-bit machines).
@cindex COMPLEX support
@cindex support, COMPLEX
@item
Maintainers of @code{gcc} report that the back end definitely has ``broken''
support for @code{COMPLEX} types.
Based on their input, it seems many of
the problems affect only the more-general facilities for gcc's
@code{__complex__} type, such as @code{__complex__ int}
(where the real and imaginary parts are integers) that GNU
Fortran does not use.
Version 0.5.20 of @code{g77} works around this
problem by not using the back end's support for @code{COMPLEX}.
The new option @samp{-fno-emulate-complex} avoids the work-around,
reverting to using the same ``broken'' mechanism as that used
by versions of @code{g77} prior to 0.5.20.
@cindex padding @cindex padding
@cindex structures @cindex structures
@cindex common blocks @cindex common blocks
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
@c %**start of header @c %**start of header
@setfilename g77.info @setfilename g77.info
@set last-update 1999-04-02 @set last-update 1999-04-03
@set copyrights-g77 1995-1999 @set copyrights-g77 1995-1999
@include root.texi @include root.texi
...@@ -1466,7 +1466,7 @@ by type. Explanations are in the following sections. ...@@ -1466,7 +1466,7 @@ by type. Explanations are in the following sections.
-fpcc-struct-return -freg-struct-return -fpcc-struct-return -freg-struct-return
-fshort-double -fno-common -fpack-struct -fshort-double -fno-common -fpack-struct
-fzeros -fno-second-underscore -fzeros -fno-second-underscore
-fdebug-kludge -fno-emulate-complex -fdebug-kludge -femulate-complex
-falias-check -fargument-alias -falias-check -fargument-alias
-fargument-noalias -fno-argument-noalias-global -fargument-noalias -fno-argument-noalias-global
-fno-globals -fno-globals
...@@ -3253,44 +3253,36 @@ Current plans call for this to happen when published versions of @code{g77} ...@@ -3253,44 +3253,36 @@ Current plans call for this to happen when published versions of @code{g77}
and @code{gdb} exist that provide proper access to debugging information on and @code{gdb} exist that provide proper access to debugging information on
@code{COMMON} and @code{EQUIVALENCE} members. @code{COMMON} and @code{EQUIVALENCE} members.
@cindex -fno-emulate-complex option @cindex -femulate-complex option
@cindex options, -fno-emulate-complex @cindex options, -femulate-complex
@item -fno-emulate-complex @item -femulate-complex
Implement @code{COMPLEX} arithmetic using the facilities in Implement @code{COMPLEX} arithmetic via emulation,
instead of using the facilities of
the @code{gcc} back end that provide direct support of the @code{gcc} back end that provide direct support of
@code{complex} arithmetic, instead of emulating the arithmetic. @code{complex} arithmetic.
@code{gcc} has some known problems in its back-end support (@code{gcc} had some bugs in its back-end support
for @code{complex} arithmetic, due primarily to the support not being for @code{complex} arithmetic, due primarily to the support not being
completed as of version 2.7.2.2. completed as of version 2.8.1 and @code{egcs} 1.1.2.)
Other front ends for the @code{gcc} back end avoid this problem
by emulating @code{complex} arithmetic at a higher level, so the Use @samp{-femulate-complex} if you suspect code-generation bugs,
back end sees arithmetic on the real and imaginary components. or experience compiler crashes,
To make @code{g77} more portable to systems where @code{complex} that might result from @code{g77} using the @code{COMPLEX} support
support in the @code{gcc} back end is particularly troublesome, in the @code{gcc} back end.
@code{g77} now defaults to performing the same kinds of emulations If using that option fixes the bugs or crashes you are seeing,
done by these other front ends. that indicates a likely @code{g77} bugs
(though, all compiler crashes are considered bugs),
Use @samp{-fno-emulate-complex} to try the @code{complex} support so, please report it.
in the @code{gcc} back end, in case it works and produces faster (Note that the known bugs, now believed fixed, produced compiler crashes
programs. rather than causing the generation of incorrect code.)
So far, all the known bugs seem to involve compile-time crashes,
rather than the generation of incorrect code.
Use of this option should not affect how Fortran code compiled Use of this option should not affect how Fortran code compiled
by @code{g77} works in terms of its interfaces to other code, by @code{g77} works in terms of its interfaces to other code,
e.g. that compiled by @code{f2c}. e.g. that compiled by @code{f2c}.
@emph{Caution:} Future versions of @code{g77} are likely to change @emph{Caution:} Future versions of @code{g77} might ignore both forms
the default for this option to
@samp{-fno-emulate-complex}, and perhaps someday ignore both forms
of this option. of this option.
Also, it is possible that use of the @samp{-fno-emulate-complex} option
could result in incorrect code being silently produced by @code{g77}.
But, this is generally true of compilers anyway, so, as usual, test
the programs you compile before assuming they are working.
@cindex -falias-check option @cindex -falias-check option
@cindex options, -falias-check @cindex options, -falias-check
@cindex -fargument-alias option @cindex -fargument-alias option
...@@ -8896,11 +8888,6 @@ mode afterward. ...@@ -8896,11 +8888,6 @@ mode afterward.
(In @code{gdb}, this is accomplished via @samp{set lang c} and (In @code{gdb}, this is accomplished via @samp{set lang c} and
either @samp{set lang fortran} or @samp{set lang auto}.) either @samp{set lang fortran} or @samp{set lang auto}.)
@emph{Note:} Compiling with the @samp{-fno-emulate-complex} option
avoids the debugging problem, but is known to cause other problems
like compiler crashes and generation of incorrect code, so it is
not recommended.
@node Arrays @node Arrays
@section Arrays (DIMENSION) @section Arrays (DIMENSION)
@cindex DIMENSION statement @cindex DIMENSION statement
......
...@@ -81,8 +81,8 @@ FTNOPT( "-finit-local-zero", "Initialize local vars and arrays to zero" ) ...@@ -81,8 +81,8 @@ FTNOPT( "-finit-local-zero", "Initialize local vars and arrays to zero" )
FTNOPT( "-fno-init-local-zero", "" ) FTNOPT( "-fno-init-local-zero", "" )
FTNOPT( "-fbackslash", "" ) FTNOPT( "-fbackslash", "" )
FTNOPT( "-fno-backslash", "Backslashes in character/hollerith constants not special (C-style)" ) FTNOPT( "-fno-backslash", "Backslashes in character/hollerith constants not special (C-style)" )
FTNOPT( "-femulate-complex", "" ) FTNOPT( "-femulate-complex", "Have front end emulate COMPLEX arithmetic to avoid bugs" )
FTNOPT( "-fno-emulate-complex", "Have compiler back end cope with COMPLEX arithmetic" ) FTNOPT( "-fno-emulate-complex", "" )
FTNOPT( "-funderscoring", "" ) FTNOPT( "-funderscoring", "" )
FTNOPT( "-fno-underscoring", "Disable the appending of underscores to externals" ) FTNOPT( "-fno-underscoring", "Disable the appending of underscores to externals" )
FTNOPT( "-fsecond-underscore", "" ) FTNOPT( "-fsecond-underscore", "" )
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
@c in the standalone derivations of this file (e.g. NEWS). @c in the standalone derivations of this file (e.g. NEWS).
@set copyrights-news 1995-1999 @set copyrights-news 1995-1999
@set last-update-news 1999-04-02 @set last-update-news 1999-04-03
@include root.texi @include root.texi
...@@ -204,6 +204,11 @@ when the corresponding @emph{subsequent} function program unit ...@@ -204,6 +204,11 @@ when the corresponding @emph{subsequent} function program unit
disagrees with the reference concerning the type of the function. disagrees with the reference concerning the type of the function.
@end ifclear @end ifclear
@item
@code{-fno-emulate-complex} is now the default option.
This should result in improved performance
of code that uses the @code{COMPLEX} data type.
@cindex alignment @cindex alignment
@cindex double-precision performance @cindex double-precision performance
@cindex -malign-double @cindex -malign-double
......
...@@ -65,7 +65,7 @@ bool ffe_is_do_internal_checks_ = FALSE; ...@@ -65,7 +65,7 @@ bool ffe_is_do_internal_checks_ = FALSE;
bool ffe_is_90_ = FFETARGET_defaultIS_90; bool ffe_is_90_ = FFETARGET_defaultIS_90;
bool ffe_is_automatic_ = FFETARGET_defaultIS_AUTOMATIC; bool ffe_is_automatic_ = FFETARGET_defaultIS_AUTOMATIC;
bool ffe_is_backslash_ = FFETARGET_defaultIS_BACKSLASH; bool ffe_is_backslash_ = FFETARGET_defaultIS_BACKSLASH;
bool ffe_is_emulate_complex_ = TRUE; bool ffe_is_emulate_complex_ = FALSE;
bool ffe_is_underscoring_ = FFETARGET_defaultEXTERNAL_UNDERSCORED bool ffe_is_underscoring_ = FFETARGET_defaultEXTERNAL_UNDERSCORED
|| FFETARGET_defaultUNDERSCORED_EXTERNAL_UNDERSCORED; || FFETARGET_defaultUNDERSCORED_EXTERNAL_UNDERSCORED;
bool ffe_is_second_underscore_ = FFETARGET_defaultUNDERSCORED_EXTERNAL_UNDERSCORED; bool ffe_is_second_underscore_ = FFETARGET_defaultUNDERSCORED_EXTERNAL_UNDERSCORED;
......
const char *ffe_version_string = "0.5.24-19990313"; const char *ffe_version_string = "0.5.24-19990403";
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment