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
> 

Reply via email to