Fix loop-level instrumentation + more (#32)
- fix loop-level instrumentation - support loop instrumentation w/o debug symbols via loop number - improve module_function messages - serialize num_basic_blocks - serialize num_outer_loops - serialize is_num_instructions_constrained - serialize is_loop_num_instructions_constrained - updated transpose example to use uniform_int_distribution - added transpose loop test - added fail regexes for tests which enable loop instrumentation - use module->getFullName in get_loop_file_line_info - use module->getFullName in get_func_file_line_info - use module->getFullName in get_basic_block_file_line_info
Este cometimento está contido em:
1 ascendente
1db3934f85
cometimento
a640fbdb29
9 ficheiros modificados
+207
-98
Não existem ficheiros que correspondam à sua pesquisa
@@ -98,7 +98,7 @@ struct module_function
|
||||
basic_loop_vec_t loop_blocks = {};
|
||||
std::vector<std::vector<instruction_t>> instructions = {};
|
||||
|
||||
using str_msg_t = std::tuple<int, string_t, string_t, string_t>;
|
||||
using str_msg_t = std::tuple<int, string_t, string_t, string_t, string_t>;
|
||||
using str_msg_vec_t = std::vector<str_msg_t>;
|
||||
|
||||
mutable str_msg_vec_t messages = {};
|
||||
@@ -183,6 +183,8 @@ module_function::serialize(ArchiveT& ar, const unsigned)
|
||||
|
||||
if constexpr(tim::concepts::is_output_archive<ArchiveT>::value)
|
||||
{
|
||||
ar(cereal::make_nvp("num_basic_blocks", basic_blocks.size()),
|
||||
cereal::make_nvp("num_outer_loops", loop_blocks.size()));
|
||||
ar.setNextName("heuristics");
|
||||
ar.startNode();
|
||||
ar(cereal::make_nvp("should_instrument", should_instrument()),
|
||||
@@ -202,10 +204,12 @@ module_function::serialize(ArchiveT& ar, const unsigned)
|
||||
cereal::make_nvp("is_dynamic_callsite_forced", is_dynamic_callsite_forced()),
|
||||
cereal::make_nvp("is_address_range_constrained",
|
||||
is_address_range_constrained()),
|
||||
cereal::make_nvp("is_num_instructions_constrained",
|
||||
is_num_instructions_constrained()),
|
||||
cereal::make_nvp("is_loop_address_range_constrained",
|
||||
is_loop_address_range_constrained()),
|
||||
cereal::make_nvp("is_num_instructions_constrained",
|
||||
is_num_instructions_constrained()));
|
||||
cereal::make_nvp("is_loop_num_instructions_constrained",
|
||||
is_loop_num_instructions_constrained()));
|
||||
ar.finishNode();
|
||||
// instructions can inflate JSON size so only output when verbosity is increased
|
||||
// above default
|
||||
|
||||
Criar uma nova questão referindo esta
Bloquear um utilizador