mirror of
git://sourceware.org/git/libabigail.git
synced 2025-02-22 16:56:57 +00:00
ir,corpus,comparison: Const-iffy the access to corpus interfaces
In preparation to subsequent patches that perform manipulations of the corpus interfaces, it appears that we need to add const access to those corpus interfaces. * include/abg-comparison.h (typedef string_function_ptr_map): Make this typedef use a const function_decl*, not just a function_decl*. (typedef string_var_ptr_map): Make this typedef use a const var_decl*, not just a var_decl*. * include/abg-corpus.h (typedef corpus::functions): Make this typedef be a vector<const function_decl*>, not just a vector<function_decl*>. (corpus::exported_decls_builder::fn_id_maps_to_several_fns): Adjust declaration to const function_decl*. * include/abg-fwd.h (typedef istring_var_decl_ptr_map_type) (typedef istring_function_decl_ptr_map_type): Move these typedefs to abg-ir.h. (get_function_id_or_pretty_representation): Use const function_decl*. * include/abg-ir.h (typedef istring_var_decl_ptr_map_type) (typedef istring_function_decl_ptr_map_type): Move these here from abg-fwd.h. Also make these use const var_decl* and const. function_decl. * src/abg-comparison-priv.h (sort_string_function_ptr_map) (sort_string_var_ptr_map): Use vector<const function_decl*> and vector<const var_decl*> rather than their non-const variants. * src/abg-comparison.cc (sort_string_function_ptr_map) (sort_string_var_ptr_map): Likewise. (corpus_diff::priv::{ensure_lookup_tables_populated, apply_supprs_to_added_removed_fns_vars_unreachable_types}): Adjust. * src/abg-corpus-priv.h (corpus::priv::{fns,vars}): Make these data members use vector<const function_decl*> and vector<const var_decl*> types. * src/abg-corpus.cc (corpus::exported_decls_builder::fn_id_maps_to_several_fns) (corpus::maybe_drop_some_exported_decls): Adjust. (corpus_group::priv::{fns,vars}): Make these data members use vector<const function_decl*> and vector<const var_decl*> types. * src/abg-default-reporter.cc (default_reporter::report): In the overload for const corpus_diff&, adjust. * src/abg-ir.cc (get_function_id_or_pretty_representation): Adjust. * src/abg-leaf-reporter.cc (leaf_reporter::report): In the overload for const corpus_diff&, adjust. * tools/abicompat.cc (perform_compat_check_in_normal_mode): Adjust. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
This commit is contained in:
parent
d533d15afa
commit
4b39942467
@ -204,7 +204,7 @@ typedef unordered_map<string, changed_enumerator> string_changed_enumerator_map;
|
||||
|
||||
/// Convenience typedef for a map which key is a string and which
|
||||
/// value is a pointer to @ref decl_base.
|
||||
typedef unordered_map<string, function_decl*> string_function_ptr_map;
|
||||
typedef unordered_map<string, const function_decl*> string_function_ptr_map;
|
||||
|
||||
/// Convenience typedef for a map which key is a string and which
|
||||
/// value is a @ref function_decl_diff_sptr.
|
||||
@ -229,7 +229,7 @@ typedef unordered_map<string, method_decl_sptr> string_member_function_sptr_map;
|
||||
|
||||
/// Convenience typedef for a map which key is a string and which
|
||||
/// value is a point to @ref var_decl.
|
||||
typedef unordered_map<string, var_decl*> string_var_ptr_map;
|
||||
typedef unordered_map<string, const var_decl*> string_var_ptr_map;
|
||||
|
||||
/// Convenience typedef for a pair of pointer to @ref var_decl
|
||||
/// representing a @ref var_decl change. The first member of the pair
|
||||
|
@ -28,10 +28,10 @@ public:
|
||||
typedef vector<string> strings_type;
|
||||
|
||||
/// Convenience typedef for std::vector<abigail::ir::function_decl*>
|
||||
typedef vector<function_decl*> functions;
|
||||
typedef vector<const function_decl*> functions;
|
||||
|
||||
///Convenience typedef for std::vector<abigail::ir::var_decl*>
|
||||
typedef vector<var_decl*> variables;
|
||||
typedef vector<const var_decl*> variables;
|
||||
|
||||
class exported_decls_builder;
|
||||
|
||||
@ -331,7 +331,7 @@ public:
|
||||
exported_functions();
|
||||
|
||||
std::unordered_set<function_decl*>*
|
||||
fn_id_maps_to_several_fns(function_decl*);
|
||||
fn_id_maps_to_several_fns(const function_decl*);
|
||||
|
||||
const variables&
|
||||
exported_variables() const;
|
||||
|
@ -255,10 +255,6 @@ typedef shared_ptr<var_decl> var_decl_sptr;
|
||||
/// Convenience typedef for a weak pointer on a @ref var_decl
|
||||
typedef weak_ptr<var_decl> var_decl_wptr;
|
||||
|
||||
typedef unordered_map<interned_string,
|
||||
var_decl*,
|
||||
hash_interned_string> istring_var_decl_ptr_map_type;
|
||||
|
||||
class scope_decl;
|
||||
|
||||
/// Convenience typedef for a shared pointer on a @ref scope_decl.
|
||||
@ -269,10 +265,6 @@ class function_decl;
|
||||
/// Convenience typedef for a shared pointer on a @ref function_decl
|
||||
typedef shared_ptr<function_decl> function_decl_sptr;
|
||||
|
||||
typedef unordered_map<interned_string,
|
||||
function_decl*,
|
||||
hash_interned_string> istring_function_decl_ptr_map_type;
|
||||
|
||||
class method_decl;
|
||||
|
||||
typedef shared_ptr<method_decl> method_decl_sptr;
|
||||
@ -1096,7 +1088,7 @@ interned_string
|
||||
get_function_type_name(const function_type&, bool internal = false);
|
||||
|
||||
interned_string
|
||||
get_function_id_or_pretty_representation(function_decl *fn);
|
||||
get_function_id_or_pretty_representation(const function_decl *fn);
|
||||
|
||||
interned_string
|
||||
get_method_type_name(const method_type_sptr&, bool internal = false);
|
||||
|
@ -574,6 +574,14 @@ typedef unordered_map<interned_string,
|
||||
hash_interned_string>
|
||||
istring_type_or_decl_base_sptr_map_type;
|
||||
|
||||
typedef unordered_map<interned_string,
|
||||
const function_decl*,
|
||||
hash_interned_string> istring_function_decl_ptr_map_type;
|
||||
|
||||
typedef unordered_map<interned_string,
|
||||
const var_decl*,
|
||||
hash_interned_string> istring_var_decl_ptr_map_type;
|
||||
|
||||
/// This is a type that aggregates maps of all the kinds of types that
|
||||
/// are supported by libabigail.
|
||||
///
|
||||
|
@ -1422,7 +1422,7 @@ sort_changed_data_members(changed_var_sptrs_type& input);
|
||||
|
||||
void
|
||||
sort_string_function_ptr_map(const string_function_ptr_map& map,
|
||||
vector<function_decl*>& sorted);
|
||||
vector<const function_decl*>& sorted);
|
||||
|
||||
void
|
||||
sort_string_member_function_sptr_map(const string_member_function_sptr_map& map,
|
||||
@ -1447,7 +1447,7 @@ sort_string_elf_symbol_map(const string_elf_symbol_map& map,
|
||||
|
||||
void
|
||||
sort_string_var_ptr_map(const string_var_ptr_map& map,
|
||||
vector<var_decl*>& sorted);
|
||||
vector<const var_decl*>& sorted);
|
||||
|
||||
void
|
||||
sort_string_data_member_diff_sptr_map(const string_var_diff_sptr_map& map,
|
||||
|
@ -176,7 +176,7 @@ sort_changed_data_members(changed_var_sptrs_type& to_sort)
|
||||
/// @param sorted the resulting sorted vector.
|
||||
void
|
||||
sort_string_function_ptr_map(const string_function_ptr_map& map,
|
||||
vector<function_decl*>& sorted)
|
||||
vector<const function_decl*>& sorted)
|
||||
{
|
||||
sorted.reserve(map.size());
|
||||
for (string_function_ptr_map::const_iterator i = map.begin();
|
||||
@ -283,7 +283,7 @@ sort_string_elf_symbol_map(const string_elf_symbol_map& map,
|
||||
/// @param sorted out parameter; the sorted vector of @ref var_decl.
|
||||
void
|
||||
sort_string_var_ptr_map(const string_var_ptr_map& map,
|
||||
vector<var_decl*>& sorted)
|
||||
vector<const var_decl*>& sorted)
|
||||
{
|
||||
for (string_var_ptr_map::const_iterator i = map.begin();
|
||||
i != map.end();
|
||||
@ -9382,7 +9382,7 @@ corpus_diff::priv::ensure_lookup_tables_populated()
|
||||
unsigned i = it->index();
|
||||
ABG_ASSERT(i < first_->get_functions().size());
|
||||
|
||||
function_decl* deleted_fn = first_->get_functions()[i];
|
||||
const function_decl* deleted_fn = first_->get_functions()[i];
|
||||
string n = get_function_id_or_pretty_representation(deleted_fn);
|
||||
ABG_ASSERT(!n.empty());
|
||||
// The below is commented out because there can be several
|
||||
@ -9402,7 +9402,7 @@ corpus_diff::priv::ensure_lookup_tables_populated()
|
||||
++iit)
|
||||
{
|
||||
unsigned i = *iit;
|
||||
function_decl* added_fn = second_->get_functions()[i];
|
||||
const function_decl* added_fn = second_->get_functions()[i];
|
||||
string n = get_function_id_or_pretty_representation(added_fn);
|
||||
ABG_ASSERT(!n.empty());
|
||||
// The below is commented out because there can be several
|
||||
@ -9413,8 +9413,10 @@ corpus_diff::priv::ensure_lookup_tables_populated()
|
||||
deleted_fns_.find(n);
|
||||
if (j != deleted_fns_.end())
|
||||
{
|
||||
function_decl_sptr f(j->second, noop_deleter());
|
||||
function_decl_sptr s(added_fn, noop_deleter());
|
||||
function_decl_sptr f(const_cast<function_decl*>(j->second),
|
||||
noop_deleter());
|
||||
function_decl_sptr s(const_cast<function_decl*>(added_fn),
|
||||
noop_deleter());
|
||||
function_decl_diff_sptr d = compute_diff(f, s, ctxt);
|
||||
if (*j->second != *added_fn)
|
||||
changed_fns_map_[j->first] = d;
|
||||
@ -9482,7 +9484,7 @@ corpus_diff::priv::ensure_lookup_tables_populated()
|
||||
unsigned i = it->index();
|
||||
ABG_ASSERT(i < first_->get_variables().size());
|
||||
|
||||
var_decl* deleted_var = first_->get_variables()[i];
|
||||
const var_decl* deleted_var = first_->get_variables()[i];
|
||||
string n = deleted_var->get_id();
|
||||
ABG_ASSERT(!n.empty());
|
||||
ABG_ASSERT(deleted_vars_.find(n) == deleted_vars_.end());
|
||||
@ -9499,7 +9501,7 @@ corpus_diff::priv::ensure_lookup_tables_populated()
|
||||
++iit)
|
||||
{
|
||||
unsigned i = *iit;
|
||||
var_decl* added_var = second_->get_variables()[i];
|
||||
const var_decl* added_var = second_->get_variables()[i];
|
||||
string n = added_var->get_id();
|
||||
ABG_ASSERT(!n.empty());
|
||||
{
|
||||
@ -9517,8 +9519,10 @@ corpus_diff::priv::ensure_lookup_tables_populated()
|
||||
{
|
||||
if (*j->second != *added_var)
|
||||
{
|
||||
var_decl_sptr f(j->second, noop_deleter());
|
||||
var_decl_sptr s(added_var, noop_deleter());
|
||||
var_decl_sptr f(const_cast<var_decl*>(j->second),
|
||||
noop_deleter());
|
||||
var_decl_sptr s(const_cast<var_decl*>(added_var),
|
||||
noop_deleter());
|
||||
changed_vars_map_[n] = compute_diff(f, s, ctxt);
|
||||
}
|
||||
deleted_vars_.erase(j);
|
||||
@ -10045,7 +10049,7 @@ corpus_diff::priv::apply_supprs_to_added_removed_fns_vars_unreachable_types()
|
||||
if (is_member_function(e->second)
|
||||
&& get_member_function_is_virtual(e->second))
|
||||
{
|
||||
function_decl *f = e->second;
|
||||
const function_decl *f = e->second;
|
||||
class_decl_sptr c =
|
||||
is_class_type(is_method_type(f->get_type())->get_class_type());
|
||||
ABG_ASSERT(c);
|
||||
@ -10059,7 +10063,7 @@ corpus_diff::priv::apply_supprs_to_added_removed_fns_vars_unreachable_types()
|
||||
if (is_member_function(e->second)
|
||||
&& get_member_function_is_virtual(e->second))
|
||||
{
|
||||
function_decl *f = e->second;
|
||||
const function_decl *f = e->second;
|
||||
class_decl_sptr c =
|
||||
is_class_type(is_method_type(f->get_type())->get_class_type());
|
||||
ABG_ASSERT(c);
|
||||
|
@ -742,8 +742,8 @@ struct corpus::priv
|
||||
string architecture_name;
|
||||
translation_units members;
|
||||
string_tu_map_type path_tu_map;
|
||||
vector<function_decl*> fns;
|
||||
vector<var_decl*> vars;
|
||||
vector<const function_decl*> fns;
|
||||
vector<const var_decl*> vars;
|
||||
symtab_reader::symtab_sptr symtab_;
|
||||
// The type maps contained in this data member are populated if the
|
||||
// corpus follows the One Definition Rule and thus if there is only
|
||||
|
@ -122,7 +122,7 @@ corpus::exported_decls_builder::exported_functions()
|
||||
/// @return the set of functions designated by the ELF symbol of @p
|
||||
/// fn, or nullptr if the function ID maps to just @p fn.
|
||||
std::unordered_set<function_decl*>*
|
||||
corpus::exported_decls_builder::fn_id_maps_to_several_fns(function_decl* fn)
|
||||
corpus::exported_decls_builder::fn_id_maps_to_several_fns(const function_decl* fn)
|
||||
{
|
||||
std::unordered_set<function_decl*> *fns_for_id =
|
||||
priv_->fn_id_is_in_id_fns_map(fn);
|
||||
@ -1570,11 +1570,9 @@ corpus::maybe_drop_some_exported_decls()
|
||||
{
|
||||
string sym_name, sym_version;
|
||||
|
||||
vector<function_decl*> fns_to_keep;
|
||||
functions fns_to_keep;
|
||||
exported_decls_builder* b = get_exported_decls_builder().get();
|
||||
for (vector<function_decl*>::iterator f = priv_->fns.begin();
|
||||
f != priv_->fns.end();
|
||||
++f)
|
||||
for (auto f = priv_->fns.begin(); f != priv_->fns.end(); ++f)
|
||||
{
|
||||
if (b->priv_->keep_wrt_id_of_fns_to_keep(*f)
|
||||
&& b->priv_->keep_wrt_regex_of_fns_to_suppress(*f)
|
||||
@ -1583,10 +1581,8 @@ corpus::maybe_drop_some_exported_decls()
|
||||
}
|
||||
priv_->fns = fns_to_keep;
|
||||
|
||||
vector<var_decl*> vars_to_keep;
|
||||
for (vector<var_decl*>::iterator v = priv_->vars.begin();
|
||||
v != priv_->vars.end();
|
||||
++v)
|
||||
variables vars_to_keep;
|
||||
for (auto v = priv_->vars.begin(); v != priv_->vars.end(); ++v)
|
||||
{
|
||||
if (b->priv_->keep_wrt_id_of_vars_to_keep(*v)
|
||||
&& b->priv_->keep_wrt_regex_of_vars_to_suppress(*v)
|
||||
@ -1690,9 +1686,9 @@ struct corpus_group::priv
|
||||
std::set<string> corpora_paths;
|
||||
corpora_type corpora;
|
||||
istring_function_decl_ptr_map_type fns_map;
|
||||
vector<function_decl*> fns;
|
||||
corpus::functions fns;
|
||||
istring_var_decl_ptr_map_type vars_map;
|
||||
vector<var_decl*> vars;
|
||||
corpus::variables vars;
|
||||
string_elf_symbols_map_type var_symbol_map;
|
||||
string_elf_symbols_map_type fun_symbol_map;
|
||||
elf_symbols sorted_var_symbols;
|
||||
|
@ -1886,32 +1886,29 @@ default_reporter::report(const corpus_diff& d, ostream& out,
|
||||
out << indent << s.net_num_func_removed() << " Removed functions:\n\n";
|
||||
|
||||
bool emitted = false;
|
||||
vector<function_decl*>sorted_deleted_fns;
|
||||
corpus::functions sorted_deleted_fns;
|
||||
sort_string_function_ptr_map(d.priv_->deleted_fns_, sorted_deleted_fns);
|
||||
for (vector<function_decl*>::const_iterator i =
|
||||
sorted_deleted_fns.begin();
|
||||
i != sorted_deleted_fns.end();
|
||||
++i)
|
||||
for (auto f : sorted_deleted_fns)
|
||||
{
|
||||
if (d.priv_->deleted_function_is_suppressed(*i))
|
||||
if (d.priv_->deleted_function_is_suppressed(f))
|
||||
continue;
|
||||
|
||||
out << indent
|
||||
<< " ";
|
||||
out << "[D] ";
|
||||
out << "'" << (*i)->get_pretty_representation() << "'";
|
||||
out << "'" << (f)->get_pretty_representation() << "'";
|
||||
if (ctxt->show_linkage_names())
|
||||
{
|
||||
out << " {";
|
||||
show_linkage_name_and_aliases(out, "", *(*i)->get_symbol(),
|
||||
show_linkage_name_and_aliases(out, "", *(f)->get_symbol(),
|
||||
d.first_corpus()->get_fun_symbol_map());
|
||||
out << "}";
|
||||
}
|
||||
out << "\n";
|
||||
if (is_member_function(*i) && get_member_function_is_virtual(*i))
|
||||
if (is_member_function(f) && get_member_function_is_virtual(f))
|
||||
{
|
||||
class_decl_sptr c =
|
||||
is_class_type(is_method_type((*i)->get_type())->get_class_type());
|
||||
is_class_type(is_method_type(f->get_type())->get_class_type());
|
||||
out << indent
|
||||
<< " "
|
||||
<< "note that this removes an entry from the vtable of "
|
||||
@ -1932,13 +1929,11 @@ default_reporter::report(const corpus_diff& d, ostream& out,
|
||||
out << indent << s.net_num_func_added()
|
||||
<< " Added functions:\n\n";
|
||||
bool emitted = false;
|
||||
vector<function_decl*> sorted_added_fns;
|
||||
corpus::functions sorted_added_fns;
|
||||
sort_string_function_ptr_map(d.priv_->added_fns_, sorted_added_fns);
|
||||
for (vector<function_decl*>::const_iterator i = sorted_added_fns.begin();
|
||||
i != sorted_added_fns.end();
|
||||
++i)
|
||||
for (auto f : sorted_added_fns)
|
||||
{
|
||||
if (d.priv_->added_function_is_suppressed(*i))
|
||||
if (d.priv_->added_function_is_suppressed(f))
|
||||
continue;
|
||||
|
||||
out
|
||||
@ -1946,21 +1941,21 @@ default_reporter::report(const corpus_diff& d, ostream& out,
|
||||
<< " ";
|
||||
out << "[A] ";
|
||||
out << "'"
|
||||
<< (*i)->get_pretty_representation()
|
||||
<< f->get_pretty_representation()
|
||||
<< "'";
|
||||
if (ctxt->show_linkage_names())
|
||||
{
|
||||
out << " {";
|
||||
show_linkage_name_and_aliases
|
||||
(out, "", *(*i)->get_symbol(),
|
||||
(out, "", *f->get_symbol(),
|
||||
d.second_corpus()->get_fun_symbol_map());
|
||||
out << "}";
|
||||
}
|
||||
out << "\n";
|
||||
if (is_member_function(*i) && get_member_function_is_virtual(*i))
|
||||
if (is_member_function(f) && get_member_function_is_virtual(f))
|
||||
{
|
||||
class_decl_sptr c =
|
||||
is_class_type(is_method_type((*i)->get_type())->get_class_type());
|
||||
is_class_type(is_method_type(f->get_type())->get_class_type());
|
||||
out << indent
|
||||
<< " "
|
||||
<< "note that this adds a new entry to the vtable of "
|
||||
@ -2063,17 +2058,14 @@ default_reporter::report(const corpus_diff& d, ostream& out,
|
||||
<< " Removed variables:\n\n";
|
||||
string n;
|
||||
bool emitted = false;
|
||||
vector<var_decl*> sorted_deleted_vars;
|
||||
corpus::variables sorted_deleted_vars;
|
||||
sort_string_var_ptr_map(d.priv_->deleted_vars_, sorted_deleted_vars);
|
||||
for (vector<var_decl*>::const_iterator i =
|
||||
sorted_deleted_vars.begin();
|
||||
i != sorted_deleted_vars.end();
|
||||
++i)
|
||||
for (auto v : sorted_deleted_vars)
|
||||
{
|
||||
if (d.priv_->deleted_variable_is_suppressed(*i))
|
||||
if (d.priv_->deleted_variable_is_suppressed(v))
|
||||
continue;
|
||||
|
||||
n = (*i)->get_pretty_representation();
|
||||
n = v->get_pretty_representation();
|
||||
|
||||
out << indent
|
||||
<< " ";
|
||||
@ -2084,7 +2076,7 @@ default_reporter::report(const corpus_diff& d, ostream& out,
|
||||
if (ctxt->show_linkage_names())
|
||||
{
|
||||
out << " {";
|
||||
show_linkage_name_and_aliases(out, "", *(*i)->get_symbol(),
|
||||
show_linkage_name_and_aliases(out, "", *v->get_symbol(),
|
||||
d.first_corpus()->get_var_symbol_map());
|
||||
out << "}";
|
||||
}
|
||||
@ -2104,17 +2096,14 @@ default_reporter::report(const corpus_diff& d, ostream& out,
|
||||
<< " Added variables:\n\n";
|
||||
string n;
|
||||
bool emitted = false;
|
||||
vector<var_decl*> sorted_added_vars;
|
||||
corpus::variables sorted_added_vars;
|
||||
sort_string_var_ptr_map(d.priv_->added_vars_, sorted_added_vars);
|
||||
for (vector<var_decl*>::const_iterator i =
|
||||
sorted_added_vars.begin();
|
||||
i != sorted_added_vars.end();
|
||||
++i)
|
||||
for (auto v : sorted_added_vars)
|
||||
{
|
||||
if (d.priv_->added_variable_is_suppressed(*i))
|
||||
if (d.priv_->added_variable_is_suppressed(v))
|
||||
continue;
|
||||
|
||||
n = (*i)->get_pretty_representation();
|
||||
n = v->get_pretty_representation();
|
||||
|
||||
out << indent
|
||||
<< " ";
|
||||
@ -2123,7 +2112,7 @@ default_reporter::report(const corpus_diff& d, ostream& out,
|
||||
if (ctxt->show_linkage_names())
|
||||
{
|
||||
out << " {";
|
||||
show_linkage_name_and_aliases(out, "", *(*i)->get_symbol(),
|
||||
show_linkage_name_and_aliases(out, "", *v->get_symbol(),
|
||||
d.second_corpus()->get_var_symbol_map());
|
||||
out << "}";
|
||||
}
|
||||
|
@ -9221,13 +9221,13 @@ get_function_type_name(const function_type& fn_type,
|
||||
///
|
||||
/// @return the function ID of pretty representation of @p fn.
|
||||
interned_string
|
||||
get_function_id_or_pretty_representation(function_decl *fn)
|
||||
get_function_id_or_pretty_representation(const function_decl *fn)
|
||||
{
|
||||
ABG_ASSERT(fn);
|
||||
|
||||
interned_string result = fn->get_environment().intern(fn->get_id());
|
||||
|
||||
if (corpus *c = fn->get_corpus())
|
||||
if (const corpus *c = fn->get_corpus())
|
||||
{
|
||||
corpus::exported_decls_builder_sptr b =
|
||||
c->get_exported_decls_builder();
|
||||
|
@ -1074,32 +1074,29 @@ leaf_reporter::report(const corpus_diff& d,
|
||||
out << indent << s.net_num_func_removed() << " Removed functions:\n\n";
|
||||
|
||||
bool emitted = false;
|
||||
vector<function_decl*>sorted_deleted_fns;
|
||||
corpus::functions sorted_deleted_fns;
|
||||
sort_string_function_ptr_map(d.priv_->deleted_fns_, sorted_deleted_fns);
|
||||
for (vector<function_decl*>::const_iterator i =
|
||||
sorted_deleted_fns.begin();
|
||||
i != sorted_deleted_fns.end();
|
||||
++i)
|
||||
for (auto f : sorted_deleted_fns)
|
||||
{
|
||||
if (d.priv_->deleted_function_is_suppressed(*i))
|
||||
if (d.priv_->deleted_function_is_suppressed(f))
|
||||
continue;
|
||||
|
||||
out << indent
|
||||
<< " ";
|
||||
out << "[D] ";
|
||||
out << "'" << (*i)->get_pretty_representation() << "'";
|
||||
out << "'" << f->get_pretty_representation() << "'";
|
||||
if (ctxt->show_linkage_names())
|
||||
{
|
||||
out << " {";
|
||||
show_linkage_name_and_aliases(out, "", *(*i)->get_symbol(),
|
||||
show_linkage_name_and_aliases(out, "", *f->get_symbol(),
|
||||
d.first_corpus()->get_fun_symbol_map());
|
||||
out << "}";
|
||||
}
|
||||
out << "\n";
|
||||
if (is_member_function(*i) && get_member_function_is_virtual(*i))
|
||||
if (is_member_function(f) && get_member_function_is_virtual(f))
|
||||
{
|
||||
class_decl_sptr c =
|
||||
is_class_type(is_method_type((*i)->get_type())->get_class_type());
|
||||
is_class_type(is_method_type(f->get_type())->get_class_type());
|
||||
out << indent
|
||||
<< " "
|
||||
<< "note that this removes an entry from the vtable of "
|
||||
@ -1120,13 +1117,11 @@ leaf_reporter::report(const corpus_diff& d,
|
||||
out << indent << s.net_num_func_added()
|
||||
<< " Added functions:\n\n";
|
||||
bool emitted = false;
|
||||
vector<function_decl*> sorted_added_fns;
|
||||
corpus::functions sorted_added_fns;
|
||||
sort_string_function_ptr_map(d.priv_->added_fns_, sorted_added_fns);
|
||||
for (vector<function_decl*>::const_iterator i = sorted_added_fns.begin();
|
||||
i != sorted_added_fns.end();
|
||||
++i)
|
||||
for (auto f : sorted_added_fns)
|
||||
{
|
||||
if (d.priv_->added_function_is_suppressed(*i))
|
||||
if (d.priv_->added_function_is_suppressed(f))
|
||||
continue;
|
||||
|
||||
out
|
||||
@ -1134,21 +1129,21 @@ leaf_reporter::report(const corpus_diff& d,
|
||||
<< " ";
|
||||
out << "[A] ";
|
||||
out << "'"
|
||||
<< (*i)->get_pretty_representation()
|
||||
<< f->get_pretty_representation()
|
||||
<< "'";
|
||||
if (ctxt->show_linkage_names())
|
||||
{
|
||||
out << " {";
|
||||
show_linkage_name_and_aliases
|
||||
(out, "", *(*i)->get_symbol(),
|
||||
(out, "", *f->get_symbol(),
|
||||
d.second_corpus()->get_fun_symbol_map());
|
||||
out << "}";
|
||||
}
|
||||
out << "\n";
|
||||
if (is_member_function(*i) && get_member_function_is_virtual(*i))
|
||||
if (is_member_function(f) && get_member_function_is_virtual(f))
|
||||
{
|
||||
class_decl_sptr c =
|
||||
is_class_type(is_method_type((*i)->get_type())->get_class_type());
|
||||
is_class_type(is_method_type(f->get_type())->get_class_type());
|
||||
out << indent
|
||||
<< " "
|
||||
<< "note that this adds a new entry to the vtable of "
|
||||
@ -1239,17 +1234,14 @@ leaf_reporter::report(const corpus_diff& d,
|
||||
<< " Removed variables:\n\n";
|
||||
string n;
|
||||
bool emitted = false;
|
||||
vector<var_decl*> sorted_deleted_vars;
|
||||
corpus::variables sorted_deleted_vars;
|
||||
sort_string_var_ptr_map(d.priv_->deleted_vars_, sorted_deleted_vars);
|
||||
for (vector<var_decl*>::const_iterator i =
|
||||
sorted_deleted_vars.begin();
|
||||
i != sorted_deleted_vars.end();
|
||||
++i)
|
||||
for (auto v : sorted_deleted_vars)
|
||||
{
|
||||
if (d.priv_->deleted_variable_is_suppressed(*i))
|
||||
if (d.priv_->deleted_variable_is_suppressed(v))
|
||||
continue;
|
||||
|
||||
n = (*i)->get_pretty_representation();
|
||||
n = v->get_pretty_representation();
|
||||
|
||||
out << indent
|
||||
<< " ";
|
||||
@ -1260,7 +1252,7 @@ leaf_reporter::report(const corpus_diff& d,
|
||||
if (ctxt->show_linkage_names())
|
||||
{
|
||||
out << " {";
|
||||
show_linkage_name_and_aliases(out, "", *(*i)->get_symbol(),
|
||||
show_linkage_name_and_aliases(out, "", *v->get_symbol(),
|
||||
d.first_corpus()->get_var_symbol_map());
|
||||
out << "}";
|
||||
}
|
||||
@ -1280,17 +1272,14 @@ leaf_reporter::report(const corpus_diff& d,
|
||||
<< " Added variables:\n\n";
|
||||
string n;
|
||||
bool emitted = false;
|
||||
vector<var_decl*> sorted_added_vars;
|
||||
corpus::variables sorted_added_vars;
|
||||
sort_string_var_ptr_map(d.priv_->added_vars_, sorted_added_vars);
|
||||
for (vector<var_decl*>::const_iterator i =
|
||||
sorted_added_vars.begin();
|
||||
i != sorted_added_vars.end();
|
||||
++i)
|
||||
for (auto v : sorted_added_vars)
|
||||
{
|
||||
if (d.priv_->added_variable_is_suppressed(*i))
|
||||
if (d.priv_->added_variable_is_suppressed(v))
|
||||
continue;
|
||||
|
||||
n = (*i)->get_pretty_representation();
|
||||
n = v->get_pretty_representation();
|
||||
|
||||
out << indent
|
||||
<< " ";
|
||||
@ -1299,7 +1288,7 @@ leaf_reporter::report(const corpus_diff& d,
|
||||
if (ctxt->show_linkage_names())
|
||||
{
|
||||
out << " {";
|
||||
show_linkage_name_and_aliases(out, "", *(*i)->get_symbol(),
|
||||
show_linkage_name_and_aliases(out, "", *v->get_symbol(),
|
||||
d.second_corpus()->get_var_symbol_map());
|
||||
out << "}";
|
||||
}
|
||||
@ -1319,12 +1308,9 @@ leaf_reporter::report(const corpus_diff& d,
|
||||
out << indent << num_changed
|
||||
<< " Changed variables:\n\n";
|
||||
string n1, n2;
|
||||
for (var_diff_sptrs_type::const_iterator i =
|
||||
d.priv_->sorted_changed_vars_.begin();
|
||||
i != d.priv_->sorted_changed_vars_.end();
|
||||
++i)
|
||||
for (auto d : d.priv_->sorted_changed_vars_)
|
||||
{
|
||||
diff_sptr diff = *i;
|
||||
diff_sptr diff = d;
|
||||
|
||||
if (!diff)
|
||||
continue;
|
||||
|
@ -435,14 +435,14 @@ perform_compat_check_in_normal_mode(options& opts,
|
||||
/// the differences found in the type of that function.
|
||||
struct fn_change
|
||||
{
|
||||
function_decl* decl;
|
||||
const function_decl* decl;
|
||||
function_type_diff_sptr diff;
|
||||
|
||||
fn_change()
|
||||
: decl()
|
||||
{}
|
||||
|
||||
fn_change(function_decl* decl,
|
||||
fn_change(const function_decl* decl,
|
||||
function_type_diff_sptr difference)
|
||||
: decl(decl),
|
||||
diff(difference)
|
||||
@ -454,14 +454,14 @@ struct fn_change
|
||||
/// the differences found in the type of that variable.
|
||||
struct var_change
|
||||
{
|
||||
var_decl* decl;
|
||||
const var_decl* decl;
|
||||
diff_sptr diff;
|
||||
|
||||
var_change()
|
||||
: decl()
|
||||
{}
|
||||
|
||||
var_change(var_decl* var,
|
||||
var_change(const var_decl* var,
|
||||
diff_sptr difference)
|
||||
: decl(var),
|
||||
diff(difference)
|
||||
|
Loading…
Reference in New Issue
Block a user