On Wed, Feb 26, 2025 at 10:45:37AM +0100, Richard Biener wrote:
> OK

Unfortunately I've only bootstrapped/regtested it with normal checking.
Testing it with --enable-checking=release now shows that this patch just
moved the FAILs to a different symbol.  And note that isn't even a LTO
build.

The following patch which IMHO still makes sense, those methods are also
trivial, moves it even further.  But the next problem is
_ZN22simple_diagnostic_path9add_eventEmP9tree_nodeiPKcz
and that method is IMHO too large for the header file to be defined inline,
and doesn't even have final override like the others, isn't virtual in the
abstract class.
So, I have really no idea why it isn't compiled in.

2025-02-26  Jakub Jelinek  <ja...@redhat.com>

        PR testsuite/116143
        * simple-diagnostic-path.h (simple_diagnostic_path::get_event): Define
        inline.
        (simple_diagnostic_path::get_thread): Likewise.
        (simple_diagnostic_path::same_function_p): Likewise.
        * simple-diagnostic-path.cc (simple_diagnostic_path::get_event):
        Remove out of line definition.
        (simple_diagnostic_path::get_thread): Likewise.
        (simple_diagnostic_path::same_function_p): Likewise.

--- gcc/simple-diagnostic-path.h.jj     2025-02-26 10:59:04.475354169 +0100
+++ gcc/simple-diagnostic-path.h        2025-02-26 11:09:48.191388638 +0100
@@ -101,14 +101,19 @@ class simple_diagnostic_path : public di
   simple_diagnostic_path (pretty_printer *event_pp);
 
   unsigned num_events () const final override { return m_events.length (); }
-  const diagnostic_event & get_event (int idx) const final override;
+  const diagnostic_event & get_event (int idx) const final override
+  { return *m_events[idx]; }
   unsigned num_threads () const final override { return m_threads.length (); }
   const diagnostic_thread &
-  get_thread (diagnostic_thread_id_t) const final override;
+  get_thread (diagnostic_thread_id_t idx) const final override
+  { return *m_threads[idx]; }
   bool
   same_function_p (int event_idx_a,
-                  int event_idx_b) const final override;
-
+                  int event_idx_b) const final override
+  { 
+    return (m_events[event_idx_a]->get_fndecl ()
+           == m_events[event_idx_b]->get_fndecl ());
+  }
   diagnostic_thread_id_t add_thread (const char *name);
 
   diagnostic_event_id_t add_event (location_t loc, tree fndecl, int depth,
--- gcc/simple-diagnostic-path.cc.jj    2025-02-26 10:59:04.476354155 +0100
+++ gcc/simple-diagnostic-path.cc       2025-02-26 11:10:01.842198544 +0100
@@ -41,29 +41,6 @@ simple_diagnostic_path::simple_diagnosti
   add_thread ("main");
 }
 
-/* Implementation of diagnostic_path::get_event vfunc for
-   simple_diagnostic_path: simply return the event in the vec.  */
-
-const diagnostic_event &
-simple_diagnostic_path::get_event (int idx) const
-{
-  return *m_events[idx];
-}
-
-const diagnostic_thread &
-simple_diagnostic_path::get_thread (diagnostic_thread_id_t idx) const
-{
-  return *m_threads[idx];
-}
-
-bool
-simple_diagnostic_path::same_function_p (int event_idx_a,
-                                        int event_idx_b) const
-{
-  return (m_events[event_idx_a]->get_fndecl ()
-         == m_events[event_idx_b]->get_fndecl ());
-}
-
 diagnostic_thread_id_t
 simple_diagnostic_path::add_thread (const char *name)
 {


        Jakub

Reply via email to