diff options
Diffstat (limited to 'gnu/egcs/gcc/f/com.c')
-rw-r--r-- | gnu/egcs/gcc/f/com.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/gnu/egcs/gcc/f/com.c b/gnu/egcs/gcc/f/com.c index a3e0eb1b3a0..9500956cc22 100644 --- a/gnu/egcs/gcc/f/com.c +++ b/gnu/egcs/gcc/f/com.c @@ -213,8 +213,6 @@ typedef struct { unsigned :16, :16, :16; } vms_ino_t; /* Externals defined here. */ -#define FFECOM_FASTER_ARRAY_REFS 0 /* Generates faster code? */ - #if FFECOM_targetCURRENT == FFECOM_targetGCC /* tree.h declares a bunch of stuff that it expects the front end to @@ -9378,6 +9376,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; @@ -10596,6 +10598,9 @@ ffecom_arg_ptr_to_expr (ffebld expr, tree *length) assert (ffeinfo_kindtype (ffebld_info (expr)) == FFEINFO_kindtypeCHARACTER1); + while (ffebld_op (expr) == FFEBLD_opPAREN) + expr = ffebld_left (expr); + catlist = ffecom_concat_list_new_ (expr, FFETARGET_charactersizeNONE); switch (ffecom_concat_list_count_ (catlist)) { @@ -13038,6 +13043,12 @@ ffecom_prepare_expr_ (ffebld expr, ffebld dest UNUSED) /* Generate whatever temporaries are needed to represent the result of the expression. */ + if (bt == FFEINFO_basictypeCHARACTER) + { + while (ffebld_op (expr) == FFEBLD_opPAREN) + expr = ffebld_left (expr); + } + switch (ffebld_op (expr)) { default: @@ -15019,6 +15030,7 @@ lang_init_options () flag_reduce_all_givs = 1; flag_argument_noalias = 2; flag_errno_math = 0; + flag_complex_divide_method = 1; } void |