Commit 3de37a5d by Martin Liska Committed by Martin Liska

Introduce auto_string_vec class.

2018-06-28  Martin Liska  <mliska@suse.cz>

	* vec.h (class auto_string_vec): New (moved from auto_argvec).
	(auto_string_vec::~auto_string_vec): Likewise.
2018-06-28  Martin Liska  <mliska@suse.cz>

	* jit-playback.c (class auto_argvec): Moved to vec.h.
	(auto_argvec::~auto_argvec): Likewise.
	(compile): Use the renamed name.
	(invoke_driver): Likewise.

From-SVN: r262208
parent fb18c0c9
2018-06-28 Martin Liska <mliska@suse.cz>
* vec.h (class auto_string_vec): New (moved from auto_argvec).
(auto_string_vec::~auto_string_vec): Likewise.
2018-06-28 Eric Botcazou <ebotcazou@adacore.com>
* tree-inline.c (remap_gimple_stmt): Force input_location on the new
......
2018-06-28 Martin Liska <mliska@suse.cz>
* jit-playback.c (class auto_argvec): Moved to vec.h.
(auto_argvec::~auto_argvec): Likewise.
(compile): Use the renamed name.
(invoke_driver): Likewise.
2018-03-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
PR jit/84288
......
......@@ -1749,26 +1749,6 @@ block (function *func,
m_label_expr = NULL;
}
/* A subclass of auto_vec <char *> that frees all of its elements on
deletion. */
class auto_argvec : public auto_vec <char *>
{
public:
~auto_argvec ();
};
/* auto_argvec's dtor, freeing all contained strings, automatically
chaining up to ~auto_vec <char *>, which frees the internal buffer. */
auto_argvec::~auto_argvec ()
{
int i;
char *str;
FOR_EACH_VEC_ELT (*this, i, str)
free (str);
}
/* Compile a playback::context:
- Use the context's options to cconstruct command-line options, and
......@@ -1822,7 +1802,7 @@ compile ()
/* Acquire the JIT mutex and set "this" as the active playback ctxt. */
acquire_mutex ();
auto_argvec fake_args;
auto_string_vec fake_args;
make_fake_args (&fake_args, ctxt_progname, &requested_dumps);
if (errors_occurred ())
{
......@@ -2440,7 +2420,7 @@ invoke_driver (const char *ctxt_progname,
/* Currently this lumps together both assembling and linking into
TV_ASSEMBLE. */
auto_timevar assemble_timevar (get_timer (), tv_id);
auto_argvec argvec;
auto_string_vec argvec;
#define ADD_ARG(arg) argvec.safe_push (xstrdup (arg))
ADD_ARG (gcc_driver_name);
......
......@@ -1462,6 +1462,15 @@ vec_alloc (vec<T> *&v, unsigned nelems CXX_MEM_STAT_INFO)
}
/* A subclass of auto_vec <char *> that frees all of its elements on
deletion. */
class auto_string_vec : public auto_vec <char *>
{
public:
~auto_string_vec ();
};
/* Conditionally allocate heap memory for VEC and its internal vector. */
template<typename T>
......@@ -1554,6 +1563,18 @@ vec<T, va_heap, vl_ptr>::iterate (unsigned ix, T **ptr) const
vec_safe_iterate ((V), (I), &(P)); \
(I)--)
/* auto_string_vec's dtor, freeing all contained strings, automatically
chaining up to ~auto_vec <char *>, which frees the internal buffer. */
inline
auto_string_vec::~auto_string_vec ()
{
int i;
char *str;
FOR_EACH_VEC_ELT (*this, i, str)
free (str);
}
/* Return a copy of this vector. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment