Commit c64f913e by Craig Burley Committed by Craig Burley

improve open-coding of complex divide, use new method in g77

From-SVN: r26993
parent 9580a2d0
Tue May 18 03:53:37 1999 Craig Burley <craig@jcb-sc.com>
Improve open-coding of complex divide:
* flags.h: Declare new front-end-malleable flag.
* toplev.c: Define new flag.
* optabs.c (expand_cmplxdiv_straight): New function to do original
open-coding.
(expand_cmplxdiv_wide): New function to do new open-coding,
from Toon Moene, with changes (call to emit_barrier, dropping
of spurious `ok = 1;', plus the obvious `break;' -> `return 0;').
(expand_binop): A bit of spacing fixing, while at it.
Use new functions instead of inlining the open-coding code.
Tue May 18 00:51:46 1999 Krister Walfridsson <cato@df.lth.se>
* configure.in (arm*-*-netbsd*): Use collect2.
......
Tue May 18 03:52:04 1999 Craig Burley <craig@jcb-sc.com>
Support use of back end's improved open-coding of complex divide:
* com.c (ffecom_tree_divide_): Use RDIV_EXPR for complex divide,
instead of run-time call to [cz]_div, if `-Os' option specified.
(lang_init_options): Tell back end we want support for wide range
of inputs to complex divide.
* Bump version.
Tue May 18 00:21:34 1999 Zack Weinberg <zack@rabi.phys.columbia.edu>
* lang-specs.h: Define __GNUC__ and __GNUC_MINOR__ only if -no-gcc
......
......@@ -9378,6 +9378,10 @@ ffecom_tree_divide_ (tree tree_type, tree left, tree right,
right);
case COMPLEX_TYPE:
if (! optimize_size)
return ffecom_2 (RDIV_EXPR, tree_type,
left,
right);
{
ffecomGfrt ix;
......@@ -15019,6 +15023,7 @@ lang_init_options ()
flag_reduce_all_givs = 1;
flag_argument_noalias = 2;
flag_errno_math = 0;
flag_complex_divide_method = 1;
}
void
......
const char *ffe_version_string = "0.5.24-19990513";
const char *ffe_version_string = "0.5.24-19990515";
......@@ -296,6 +296,12 @@ extern int flag_fast_math;
extern int flag_errno_math;
/* 0 means straightforward implementation of complex divide acceptable.
1 means wide ranges of inputs must work for complex divide.
2 means C9X-like requirements for complex divide (not yet implemented). */
extern int flag_complex_divide_method;
/* Nonzero means to run loop optimizations twice. */
extern int flag_rerun_loop_opt;
......
......@@ -563,6 +563,12 @@ int flag_fast_math = 0;
int flag_errno_math = 1;
/* 0 means straightforward implementation of complex divide acceptable.
1 means wide ranges of inputs must work for complex divide.
2 means C9X-like requirements for complex divide (not yet implemented). */
int flag_complex_divide_method = 0;
/* Nonzero means all references through pointers are volatile. */
int flag_volatile;
......
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