mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-23 06:20:25 +08:00
re PR middle-end/18902 (Naive (default) complex division algorithm)
PR middle-end/18902 * c-opts.c (c_common_post_options): Set flag_complex_method to 2 for c99. * common.opt (fcx-limited-range): New. * opts.c (set_fast_math_flags): Set flag_cx_limited_range. * toplev.c (flag_complex_method): Initialize to 1. (process_options): Set flag_complex_method to 0 if flag_cx_limited_range. * doc/invoke.texi (-fcx-limited-range): New. From-SVN: r95493
This commit is contained in:
parent
d962e37d43
commit
c746366949
@ -1,3 +1,15 @@
|
||||
2005-02-24 Richard Henderson <rth@redhat.com>
|
||||
|
||||
PR middle-end/18902
|
||||
* c-opts.c (c_common_post_options): Set flag_complex_method to 2
|
||||
for c99.
|
||||
* common.opt (fcx-limited-range): New.
|
||||
* opts.c (set_fast_math_flags): Set flag_cx_limited_range.
|
||||
* toplev.c (flag_complex_method): Initialize to 1.
|
||||
(process_options): Set flag_complex_method to 0 if
|
||||
flag_cx_limited_range.
|
||||
* doc/invoke.texi (-fcx-limited-range): New.
|
||||
|
||||
2005-02-24 Kazu Hirata <kazu@cs.umass.edu>
|
||||
|
||||
* cse.c (delete_trivially_dead_insns): Speed up by using
|
||||
|
@ -978,6 +978,11 @@ c_common_post_options (const char **pfilename)
|
||||
if (warn_missing_format_attribute && !warn_format)
|
||||
warning ("-Wmissing-format-attribute ignored without -Wformat");
|
||||
|
||||
/* C99 requires special handling of complex multiplication and division;
|
||||
-ffast-math and -fcx-limited-range are handled in process_options. */
|
||||
if (flag_isoc99)
|
||||
flag_complex_method = 2;
|
||||
|
||||
if (flag_preprocess_only)
|
||||
{
|
||||
/* Open the output now. We must do so even if flag_no_output is
|
||||
|
@ -310,6 +310,10 @@ fcse-skip-blocks
|
||||
Common Report Var(flag_cse_skip_blocks)
|
||||
When running CSE, follow conditional jumps
|
||||
|
||||
fcx-limited-range
|
||||
Common Report Var(flag_cx_limited_range)
|
||||
Omit range reduction step when performing complex division
|
||||
|
||||
fdata-sections
|
||||
Common Report Var(flag_data_sections)
|
||||
Place data items into their own section
|
||||
|
@ -285,8 +285,8 @@ Objective-C and Objective-C++ Dialects}.
|
||||
-fbounds-check -fmudflap -fmudflapth -fmudflapir @gol
|
||||
-fbranch-probabilities -fprofile-values -fvpt -fbranch-target-load-optimize @gol
|
||||
-fbranch-target-load-optimize2 -fbtr-bb-exclusive @gol
|
||||
-fcaller-saves -fcprop-registers @gol
|
||||
-fcse-follow-jumps -fcse-skip-blocks -fdata-sections @gol
|
||||
-fcaller-saves -fcprop-registers -fcse-follow-jumps @gol
|
||||
-fcse-follow-jumps -fcse-skip-blocks -fcx-limited-range -fdata-sections @gol
|
||||
-fdelayed-branch -fdelete-null-pointer-checks @gol
|
||||
-fexpensive-optimizations -ffast-math -ffloat-store @gol
|
||||
-fforce-addr -fforce-mem -ffunction-sections @gol
|
||||
@ -5072,7 +5072,8 @@ them to store all pertinent intermediate computations into variables.
|
||||
@opindex ffast-math
|
||||
Sets @option{-fno-math-errno}, @option{-funsafe-math-optimizations}, @*
|
||||
@option{-fno-trapping-math}, @option{-ffinite-math-only},
|
||||
@option{-fno-rounding-math} and @option{-fno-signaling-nans}.
|
||||
@option{-fno-rounding-math}, @option{-fno-signaling-nans}
|
||||
and @option{fcx-limited-range}.
|
||||
|
||||
This option causes the preprocessor macro @code{__FAST_MATH__} to be defined.
|
||||
|
||||
@ -5176,6 +5177,17 @@ disable all GCC optimizations that affect signaling NaN behavior.
|
||||
Treat floating point constant as single precision constant instead of
|
||||
implicitly converting it to double precision constant.
|
||||
|
||||
@item -fcx-limited-range
|
||||
@itemx -fno-cx-limited-range
|
||||
@opindex fcx-limited-range
|
||||
@opindex fno-cx-limited-range
|
||||
When enabled, this option states that a range reduction step is not
|
||||
needed when performing complex division. The default is
|
||||
@option{-fno-cx-limited-range}, but is enabled by @option{-ffast-math}.
|
||||
|
||||
This option controls the default setting of the ISO C99
|
||||
@code{CX_LIMITED_RANGE} pragma. Nevertheless, the option applies to
|
||||
all languages.
|
||||
|
||||
@end table
|
||||
|
||||
|
@ -1097,6 +1097,7 @@ set_fast_math_flags (int set)
|
||||
{
|
||||
flag_signaling_nans = 0;
|
||||
flag_rounding_math = 0;
|
||||
flag_cx_limited_range = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -269,7 +269,7 @@ int flag_pcc_struct_return = DEFAULT_PCC_STRUCT_RETURN;
|
||||
1 means wide ranges of inputs must work for complex divide.
|
||||
2 means C99-like requirements for complex multiply and divide. */
|
||||
|
||||
int flag_complex_method = 0;
|
||||
int flag_complex_method = 1;
|
||||
|
||||
/* Nonzero means that we don't want inlining by virtue of -fno-inline,
|
||||
not just because the tree inliner turned us off. */
|
||||
@ -1948,6 +1948,10 @@ process_options (void)
|
||||
/* The presence of IEEE signaling NaNs, implies all math can trap. */
|
||||
if (flag_signaling_nans)
|
||||
flag_trapping_math = 1;
|
||||
|
||||
/* With -fcx-limited-range, we do cheap and quick complex arithmetic. */
|
||||
if (flag_cx_limited_range)
|
||||
flag_complex_method = 0;
|
||||
}
|
||||
|
||||
/* Initialize the compiler back end. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user