This is used in a couple of places in jit/jit-playback.c to ensure that we pop the timevar on every exit path from a function.
I could rewrite them if need be, but it does simplify things. Written by Tom Tromey. gcc/ChangeLog: * timevar.h (class auto_timevar): New class. --- gcc/timevar.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gcc/timevar.h b/gcc/timevar.h index 6703cc9..f018e39 100644 --- a/gcc/timevar.h +++ b/gcc/timevar.h @@ -110,6 +110,30 @@ timevar_pop (timevar_id_t tv) timevar_pop_1 (tv); } +// This is a simple timevar wrapper class that pushes a timevar in its +// constructor and pops the timevar in its destructor. +class auto_timevar +{ + public: + auto_timevar (timevar_id_t tv) + : m_tv (tv) + { + timevar_push (m_tv); + } + + ~auto_timevar () + { + timevar_pop (m_tv); + } + + private: + + // Private to disallow copies. + auto_timevar (const auto_timevar &); + + timevar_id_t m_tv; +}; + extern void print_time (const char *, long); #endif /* ! GCC_TIMEVAR_H */ -- 1.8.5.3