On Wed, Jan 18, 2023 at 01:30:53PM +0100, Andreas Schwab wrote: > On Jan 18 2023, Jakub Jelinek wrote: > > > On Wed, Jan 18, 2023 at 12:25:11PM +0100, Andreas Schwab via Gcc-patches > > wrote: > >> On Jan 18 2023, Richard Biener wrote: > >> > >> > 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. > >> > > >> > They are already stored per function, and ... > >> > >> Are they? Are you sure you don't confuse that with -fexceptions? > > > > They clearly are: > > fasynchronous-unwind-tables > > Common Var(flag_asynchronous_unwind_tables) Optimization > > Generate unwind tables that are exact at each instruction boundary. > > and > > funwind-tables > > Common Var(flag_unwind_tables) Optimization > > Just generate unwind tables for exception handling. > > How is that supposed to work then?
With LTO each function has the DECL_FUNCTION_SPECIFIC_OPTIMIZATION (and _TARGET), for functions with optimize attribute obviously as without LTO specific to what options have been overridden (but with defaults from TU's command line etc.), for functions without that simply with what options has the TU. lto1 then streams in those options and when switching functions switches the global options. Jakub