On 9/6/21 14:16, Richard Biener wrote: > On Mon, Sep 6, 2021 at 1:46 PM Jakub Jelinek wrote: >> >> On Mon, Sep 06, 2021 at 01:37:46PM +0200, Martin Liška wrote: >>> --- a/gcc/opts.c >>> +++ b/gcc/opts.c >>> @@ -1323,6 +1323,14 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set, >>> = (opts->x_flag_unroll_loops >>> || opts->x_flag_peel_loops >>> || opts->x_optimize >= 3); >>> + >>> + /* With -fcx-limited-range, we do cheap and quick complex arithmetic. */ >>> + if (opts->x_flag_cx_limited_range) >>> + flag_complex_method = 0; >>> + >>> + /* With -fcx-fortran-rules, we do something in-between cheap and C99. */ >>> + if (opts->x_flag_cx_fortran_rules) >>> + flag_complex_method = 1; >> >> That should then be opts->x_flag_complex_method instead of flag_complex_method. >> >> Ok with that change. > > But the C/C++ langhooks also set flag_complex_method so I fail to see how > this helps? As said I was referring to -fcx-limited-range on the command-line > and -fno-cx-limited-range in the optimize node to undo this which should > get you the langhook setting of flag_complex_method = 2. You are right, it's even more complicated as -fno-cx-limited-range is target specific. Option handling has been introducing surprises every time ... The following tested patch should handle it. Ready to be installed? Thanks, Martin > >> Note, I think we want to do much more in finish_options and less in >> process_options, anything that is about Optimization options rather than >> just the global ones. Though one needs to be careful with the cases where >> the code diagnoses something. >> >> Jakub >>