re PR fortran/29549 (matmul slow for complex matrices)
authorJanne Blomqvist <jb@gcc.gnu.org>
Mon, 25 Feb 2008 19:20:48 +0000 (21:20 +0200)
committerJanne Blomqvist <jb@gcc.gnu.org>
Mon, 25 Feb 2008 19:20:48 +0000 (21:20 +0200)
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

gcc/common.opt
gcc/doc/invoke.texi
gcc/toplev.c

index 3a64d2a1a83daf0f1df99a368f65f60051ccc51d..670466bdb3099da596e0cb42bc5058c56294ea1c 100644 (file)
@@ -405,6 +405,10 @@ fcx-limited-range
 Common Report Var(flag_cx_limited_range) Optimization
 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
 Common Report Var(flag_data_sections) Optimization
 Place data items into their own section
index ab0bc2bfbd5b20ff89dadbafa5558f97abd18643..693f30de694faa554bc0b17c40e51c53c9d4df55 100644 (file)
@@ -321,7 +321,7 @@ Objective-C and Objective-C++ Dialects}.
 -fauto-inc-dec -fbranch-probabilities -fbranch-target-load-optimize @gol
 -fbranch-target-load-optimize2 -fbtr-bb-exclusive -fcaller-saves @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
 -fdelayed-branch -fdelete-null-pointer-checks -fdse -fdse @gol
 -fearly-inlining -fexpensive-optimizations -ffast-math @gol
@@ -6557,6 +6557,15 @@ This option controls the default setting of the ISO C99
 @code{CX_LIMITED_RANGE} pragma.  Nevertheless, the option applies to
 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
 
 The following options control optimizations that may improve
index 512e0fb870892433d99c42d2e6aa737f577ba450..7a6be498a72cc1672b27aa6e3e0508cbd68c79db 100644 (file)
@@ -2001,6 +2001,10 @@ process_options (void)
   if (flag_cx_limited_range)
     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
      target already uses a soft frame pointer, the transition is trivial.  */
   if (!FRAME_GROWS_DOWNWARD && flag_stack_protect)