Commit 35085f76 by Janne Blomqvist

re PR fortran/29549 (matmul slow for complex matrices)

2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/29549
	* doc/invoke.texi (-fcx-limited-range): Document new option.
	* toplev.c (process_options): Handle -fcx-fortran-rules.
        * common.opt: Add documentation for -fcx-fortran-rules.

From-SVN: r132636
parent 8cc6d3e0
...@@ -405,6 +405,10 @@ fcx-limited-range ...@@ -405,6 +405,10 @@ fcx-limited-range
Common Report Var(flag_cx_limited_range) Optimization Common Report Var(flag_cx_limited_range) Optimization
Omit range reduction step when performing complex division Omit range reduction step when performing complex division
fcx-fortran-rules
Common Report Var(flag_cx_fortran_rules) Optimization
Complex multiplication and division follow Fortran rules
fdata-sections fdata-sections
Common Report Var(flag_data_sections) Optimization Common Report Var(flag_data_sections) Optimization
Place data items into their own section Place data items into their own section
......
...@@ -321,7 +321,7 @@ Objective-C and Objective-C++ Dialects}. ...@@ -321,7 +321,7 @@ Objective-C and Objective-C++ Dialects}.
-fauto-inc-dec -fbranch-probabilities -fbranch-target-load-optimize @gol -fauto-inc-dec -fbranch-probabilities -fbranch-target-load-optimize @gol
-fbranch-target-load-optimize2 -fbtr-bb-exclusive -fcaller-saves @gol -fbranch-target-load-optimize2 -fbtr-bb-exclusive -fcaller-saves @gol
-fcheck-data-deps -fcprop-registers -fcrossjumping -fcse-follow-jumps @gol -fcheck-data-deps -fcprop-registers -fcrossjumping -fcse-follow-jumps @gol
-fcse-skip-blocks -fcx-limited-range @gol -fcse-skip-blocks -fcx-fortran-rules -fcx-limited-range @gol
-fdata-sections -fdce -fdce @gol -fdata-sections -fdce -fdce @gol
-fdelayed-branch -fdelete-null-pointer-checks -fdse -fdse @gol -fdelayed-branch -fdelete-null-pointer-checks -fdse -fdse @gol
-fearly-inlining -fexpensive-optimizations -ffast-math @gol -fearly-inlining -fexpensive-optimizations -ffast-math @gol
...@@ -6557,6 +6557,15 @@ This option controls the default setting of the ISO C99 ...@@ -6557,6 +6557,15 @@ This option controls the default setting of the ISO C99
@code{CX_LIMITED_RANGE} pragma. Nevertheless, the option applies to @code{CX_LIMITED_RANGE} pragma. Nevertheless, the option applies to
all languages. all languages.
@item -fcx-fortran-rules
@opindex fcx-fortran-rules
Complex multiplication and division follow Fortran rules. Range
reduction is done as part of complex division, but there is no checking
whether the result of a complex multiplication or division is @code{NaN
+ I*NaN}, with an attempt to rescue the situation in that case.
The default is @option{-fno-cx-fortran-rules}.
@end table @end table
The following options control optimizations that may improve The following options control optimizations that may improve
......
...@@ -2001,6 +2001,10 @@ process_options (void) ...@@ -2001,6 +2001,10 @@ process_options (void)
if (flag_cx_limited_range) if (flag_cx_limited_range)
flag_complex_method = 0; flag_complex_method = 0;
/* With -fcx-fortran-rules, we do something in-between cheap and C99. */
if (flag_cx_fortran_rules)
flag_complex_method = 1;
/* Targets must be able to place spill slots at lower addresses. If the /* Targets must be able to place spill slots at lower addresses. If the
target already uses a soft frame pointer, the transition is trivial. */ target already uses a soft frame pointer, the transition is trivial. */
if (!FRAME_GROWS_DOWNWARD && flag_stack_protect) if (!FRAME_GROWS_DOWNWARD && flag_stack_protect)
......
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