From e23c1d985af63e36a05d0d735ab5c6f2cc52bd8c Mon Sep 17 00:00:00 2001 From: David Malcolm Date: Fri, 1 Mar 2019 11:26:34 -0500 Subject: [PATCH 17/64] timevar.h: add auto_client_timevar class This patch adds a class "auto_client_timevar", similar to auto_timevar, but for plugins to use on their own timing items that aren't in timevar.def gcc/ChangeLog: * timevar.h (class auto_client_timevar): New class. --- gcc/timevar.h | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/gcc/timevar.h b/gcc/timevar.h index ef404d0..d053ab7 100644 --- a/gcc/timevar.h +++ b/gcc/timevar.h @@ -256,6 +256,39 @@ class auto_timevar timevar_id_t m_tv; }; +/* An RAII class analogous to auto_timevar, but for a client item, + for use by plugins. */ + +class auto_client_timevar +{ + public: + auto_client_timevar (timer *t, const char *item_name) + : m_timer (t) + { + if (m_timer) + m_timer->push_client_item (item_name); + } + + explicit auto_client_timevar (const char *item_name) + : m_timer (g_timer) + { + if (m_timer) + m_timer->push_client_item (item_name); + } + + ~auto_client_timevar () + { + if (m_timer) + m_timer->pop_client_item (); + } + + private: + // Private to disallow copies. + auto_client_timevar (const auto_client_timevar &); + + timer *m_timer; +}; + extern void print_time (const char *, long); #endif /* ! GCC_TIMEVAR_H */ -- 1.8.5.3