On Wed, 2025-02-26 at 09:44 +0100, Jakub Jelinek wrote: > Hi! > > Various plugin tests fail with --enable-checking=release, because the > num_events and num_threads methods of simple_diagnostic_path are only > used > inside of #if CHECKING_P code inside of GCC proper and then tested > inside of > some plugin tests. So, with --enable-checking=yes they are compiled > into > cc1/cc1plus etc. binaries and plugins can call those, but with > --enable-checking=release they are optimized away (at least for LTO > builds). > > As they are trivial, the following patch just defines them inline, so > that > the plugin tests get their definitions directly and don't have to > rely > on cc1/cc1plus etc. exporting those. > > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
BTW, Qing Zhao's patch kit "[PATCH v4 0/3][RFC]Provide more contexts for -Warray-bounds and - Wstringop-* warning messages" https://gcc.gnu.org/pipermail/gcc-patches/2025-January/673474.html adds a usage of simple_diagnostic_path to OBJS via a new gcc/move- history-rich-location.o in this patch: https://gcc.gnu.org/pipermail/gcc-patches/2024-November/667615.html Dave > > 2025-02-26 Jakub Jelinek <ja...@redhat.com> > > PR testsuite/116143 > * simple-diagnostic-path.h > (simple_diagnostic_path::num_events): Define > inline. > (simple_diagnostic_path::num_threads): Likewise. > * simple-diagnostic-path.cc > (simple_diagnostic_path::num_events): > Remove out of line definition. > (simple_diagnostic_path::num_threads): Likewise. > > --- gcc/simple-diagnostic-path.h.jj 2025-01-02 > 11:23:37.876218670 +0100 > +++ gcc/simple-diagnostic-path.h 2025-02-05 > 15:29:32.882855368 +0100 > @@ -100,9 +100,9 @@ class simple_diagnostic_path : public di > public: > simple_diagnostic_path (pretty_printer *event_pp); > > - unsigned num_events () const final override; > + unsigned num_events () const final override { return > m_events.length (); } > const diagnostic_event & get_event (int idx) const final override; > - unsigned num_threads () const final override; > + unsigned num_threads () const final override { return > m_threads.length (); } > const diagnostic_thread & > get_thread (diagnostic_thread_id_t) const final override; > bool > --- gcc/simple-diagnostic-path.cc.jj 2025-01-02 > 11:23:19.409476476 +0100 > +++ gcc/simple-diagnostic-path.cc 2025-02-05 > 15:29:59.185492553 +0100 > @@ -41,15 +41,6 @@ simple_diagnostic_path::simple_diagnosti > add_thread ("main"); > } > > -/* Implementation of diagnostic_path::num_events vfunc for > - simple_diagnostic_path: simply get the number of events in the > vec. */ > - > -unsigned > -simple_diagnostic_path::num_events () const > -{ > - return m_events.length (); > -} > - > /* Implementation of diagnostic_path::get_event vfunc for > simple_diagnostic_path: simply return the event in the vec. */ > > @@ -59,12 +50,6 @@ simple_diagnostic_path::get_event (int i > return *m_events[idx]; > } > > -unsigned > -simple_diagnostic_path::num_threads () const > -{ > - return m_threads.length (); > -} > - > const diagnostic_thread & > simple_diagnostic_path::get_thread (diagnostic_thread_id_t idx) > const > { > > Jakub >