On Wed, Jan 18, 2023 at 11:17 AM Andreas Schwab via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > The -funwind-tables and -fasynchronous-unwind-tables options are relevant > for the output pass, thus they need to be passed through by the lto > wrapper. > > gcc/ > * lto-wrapper.cc (merge_and_complain): Pass through > -funwind-tables and -fasynchronous-unwind-tables. > (append_compiler_options): Likewise. > --- > gcc/lto-wrapper.cc | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/gcc/lto-wrapper.cc b/gcc/lto-wrapper.cc > index 11c4d1b38a4..627e8238606 100644 > --- a/gcc/lto-wrapper.cc > +++ b/gcc/lto-wrapper.cc > @@ -314,6 +314,8 @@ merge_and_complain (vec<cl_decoded_option> > &decoded_options, > case OPT_fshow_column: > case OPT_fcommon: > case OPT_fgnu_tm: > + case OPT_funwind_tables: > + case OPT_fasynchronous_unwind_tables: > case OPT_g: > /* Do what the old LTO code did - collect exactly one option > setting per OPT code, we pick the first we encounter.
A better place is case OPT_fopenmp: case OPT_fopenacc: /* For selected options we can merge conservatively. */ if (existing_opt == -1) decoded_options.safe_push (*foption); /* -fopenmp > -fno-openmp, -fopenacc > -fno-openacc */ else if (foption->value > decoded_options[existing_opt].value) decoded_options[existing_opt] = *foption; break; where we'd prefer -funwind-tables over -fno-unwind-tables when the options do not match across TUs. Note that you likely want to add -f[asynchronous-]unwind-tables handling in lto-options.cc:lto_write_options as well so the default is streamed as explicit option. Otherwise a single TU with -fno-unwind-tables on x86-64 would cause the whole LTO compilation to be built without. > @@ -737,6 +739,8 @@ append_compiler_options (obstack *argv_obstack, > vec<cl_decoded_option> opts) > case OPT_fopenacc_dim_: > case OPT_foffload_abi_: > case OPT_fcf_protection_: > + case OPT_funwind_tables: > + case OPT_fasynchronous_unwind_tables: > case OPT_g: > case OPT_O: > case OPT_Ofast: > -- > 2.39.1 > > > -- > Andreas Schwab, SUSE Labs, sch...@suse.de > GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 > "And now for something completely different."