@@ -105,6 +105,9 @@ has_strict_fam_conversion(const class_decl_sptr& first,
bool
has_strict_fam_conversion(const diff *d);
+bool
+has_lvalue_reference_ness_change(const diff *d);
+
struct filter_base;
/// Convenience typedef for a shared pointer to filter_base
typedef shared_ptr<filter_base> filter_base_sptr;
@@ -382,61 +382,63 @@ enum diff_category
/// incompatible change to a vtable.
VIRTUAL_MEMBER_CHANGE_CATEGORY = 1 << 12,
+ REFERENCE_LVALUENESS_CHANGE_CATEGORY = 1 << 13,
+
/// A diff node in this category is redundant. That means it's
/// present as a child of a other nodes in the diff tree.
- REDUNDANT_CATEGORY = 1 << 13,
+ REDUNDANT_CATEGORY = 1 << 14,
/// This means that a diff node in the sub-tree carries a type that
/// was declaration-only and that is now defined, or vice versa.
- TYPE_DECL_ONLY_DEF_CHANGE_CATEGORY = 1 << 14,
+ TYPE_DECL_ONLY_DEF_CHANGE_CATEGORY = 1 << 15,
/// A diff node in this category is a function parameter type which
/// top cv-qualifiers change.
- FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY = 1 << 15,
+ FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY = 1 << 16,
/// A diff node in this category has a function parameter type with a
/// cv-qualifiers change.
- FN_PARM_TYPE_CV_CHANGE_CATEGORY = 1 << 16,
+ FN_PARM_TYPE_CV_CHANGE_CATEGORY = 1 << 17,
/// A diff node in this category is a function return type with a
/// cv-qualifier change.
- FN_RETURN_TYPE_CV_CHANGE_CATEGORY = 1 << 17,
+ FN_RETURN_TYPE_CV_CHANGE_CATEGORY = 1 << 18,
/// A diff node in this category is a function (or function type)
/// with at least one parameter added or removed.
- FN_PARM_ADD_REMOVE_CHANGE_CATEGORY = 1 << 18,
+ FN_PARM_ADD_REMOVE_CHANGE_CATEGORY = 1 << 19,
/// A diff node in this category is for a variable which type holds
/// a cv-qualifier change.
- VAR_TYPE_CV_CHANGE_CATEGORY = 1 << 19,
+ VAR_TYPE_CV_CHANGE_CATEGORY = 1 << 20,
/// A diff node in this category carries a change from void pointer
/// to non-void pointer.
- VOID_PTR_TO_PTR_CHANGE_CATEGORY = 1 << 20,
+ VOID_PTR_TO_PTR_CHANGE_CATEGORY = 1 << 21,
/// A diff node in this category carries a change in the size of the
/// array type of a global variable, but the ELF size of the
/// variable didn't change.
- BENIGN_INFINITE_ARRAY_CHANGE_CATEGORY = 1 << 21,
+ BENIGN_INFINITE_ARRAY_CHANGE_CATEGORY = 1 << 22,
/// A diff node in this category carries a change that must be
/// reported, even if the diff node is also in the
/// SUPPRESSED_CATEGORY or PRIVATE_TYPE_CATEGORY categories.
/// Typically, this node matches a suppression specification like
/// the [allow_type] directive.
- HAS_ALLOWED_CHANGE_CATEGORY = 1 << 22,
+ HAS_ALLOWED_CHANGE_CATEGORY = 1 << 23,
/// A diff node in this category has a descendant node that is in
/// the HAS_ALLOWED_CHANGE_CATEGORY category. Nodes in this
/// category must be reported, even if they are also in the
/// SUPPRESSED_CATEGORY or PRIVATE_TYPE_CATEGORY categories.
- HAS_DESCENDANT_WITH_ALLOWED_CHANGE_CATEGORY = 1 << 23,
+ HAS_DESCENDANT_WITH_ALLOWED_CHANGE_CATEGORY = 1 << 24,
/// A diff node in this category has a parent node that is in the
/// HAS_ALLOWED_CHANGE_CATEGORY category. Nodes in this category
/// must be reported, even if they are also in the
/// SUPPRESSED_CATEGORY or PRIVATE_TYPE_CATEGORY categories.
- HAS_PARENT_WITH_ALLOWED_CHANGE_CATEGORY = 1 << 24,
+ HAS_PARENT_WITH_ALLOWED_CHANGE_CATEGORY = 1 << 25,
/// A special enumerator that is the logical 'or' all the
/// enumerators above.
@@ -457,6 +459,7 @@ enum diff_category
| PRIVATE_TYPE_CATEGORY
| SIZE_OR_OFFSET_CHANGE_CATEGORY
| VIRTUAL_MEMBER_CHANGE_CATEGORY
+ | REFERENCE_LVALUENESS_CHANGE_CATEGORY
| REDUNDANT_CATEGORY
| TYPE_DECL_ONLY_DEF_CHANGE_CATEGORY
| FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY
@@ -1030,6 +1030,26 @@ has_strict_fam_conversion(const diff *dif)
d->second_class_decl());
}
+/// Test if a diff node carries a change where an lvalue reference
+/// changed into a rvalue reference, or vice versa.
+///
+/// @param dif the diff node to consider.
+///
+/// @return true iff @p dif carries a change where an lvalue reference
+/// changed into a rvalue reference, or vice versa.
+bool
+has_lvalue_reference_ness_change(const diff *dif)
+{
+ const reference_diff* d = is_reference_diff(dif);
+ if (!d)
+ return false;
+
+ if (d->first_reference()->is_lvalue() == d->second_reference()->is_lvalue())
+ return false;
+
+ return true;
+}
+
/// Test if a class_diff node has static members added or removed.
///
/// @param diff the diff node to consider.
@@ -2190,6 +2210,9 @@ categorize_harmful_diff_node(diff *d, bool pre)
if (has_virtual_mem_fn_change(d))
category |= VIRTUAL_MEMBER_CHANGE_CATEGORY;
+ if (has_lvalue_reference_ness_change(d))
+ category |= REFERENCE_LVALUENESS_CHANGE_CATEGORY;
+
if (has_added_or_removed_function_parameters(d))
category |= FN_PARM_ADD_REMOVE_CHANGE_CATEGORY;
@@ -3181,6 +3181,7 @@ get_default_harmful_categories_bitmap()
{
return (abigail::comparison::SIZE_OR_OFFSET_CHANGE_CATEGORY
| abigail::comparison::VIRTUAL_MEMBER_CHANGE_CATEGORY
+ | abigail::comparison::REFERENCE_LVALUENESS_CHANGE_CATEGORY
| abigail::comparison::FN_PARM_ADD_REMOVE_CHANGE_CATEGORY);
}
@@ -3306,6 +3307,14 @@ operator<<(ostream& o, diff_category c)
emitted_a_category |= true;
}
+ if (c & REFERENCE_LVALUENESS_CHANGE_CATEGORY)
+ {
+ if (emitted_a_category)
+ o << "|";
+ o << "REFERENCE_LVALUENESS_CHANGE_CATEGORY";
+ emitted_a_category |= true;
+ }
+
if (c & REDUNDANT_CATEGORY)
{
if (emitted_a_category)
@@ -17596,16 +17596,6 @@ pointer_type_def::set_pointed_to_type(const type_base_sptr& t)
bool
equals(const pointer_type_def& l, const pointer_type_def& r, change_kind* k)
{
- // In C and C++ languages, a pointer to void equals all other
- // pointers.
- if (l.get_translation_unit()
- && r.get_translation_unit()
- && is_c_language(l.get_translation_unit()->get_language())
- && is_c_language(r.get_translation_unit()->get_language())
- && (is_void_pointer_type_equivalent(&l)
- || is_void_pointer_type_equivalent(&r)))
- return true;
-
bool result = l.get_pointed_to_type() == r.get_pointed_to_type();
if (!result)
if (k)
@@ -75,7 +75,7 @@ endif
# are logically not related to the type hashing commit will fix the
# issues and as a result, these test will PASS again. For now, let's
# mark them as being XFAIL.
-XFAIL_TESTS = runtestdifffilter runtestabidiffexit
+XFAIL_TESTS = runtestabidiffexit
EXTRA_DIST = \
runtestcanonicalizetypes.sh.in \
@@ -1,4 +1,4 @@
-Functions changes summary: 82 Removed, 6 Changed (33 filtered out), 1081 Added functions
+Functions changes summary: 82 Removed, 7 Changed (32 filtered out), 1081 Added functions
Variables changes summary: 47 Removed, 1 Changed, 11 Added variables
Function symbols changes summary: 7 Removed, 76 Added function symbols not referenced by debug info
Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info
@@ -1172,7 +1172,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
[A] 'method void std::vector<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::vector<Iterator, void>(Iterator, Iterator, const std::vector<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::allocator_type&)'
[A] 'method std::vector<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::~vector()'
-6 functions with some indirect sub-type change:
+7 functions with some indirect sub-type change:
[C] 'method void Engine::fini_process(bool)' has some indirect sub-type changes:
implicit parameter 0 of type 'Engine*' has sub-type changes:
@@ -1260,7 +1260,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} flags' changed:
type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
type size hasn't changed
- 1 data member changes (1 filtered):
+ 1 data member change:
anonymous data member at offset 0 (in bits) changed from:
struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
to:
@@ -1429,6 +1429,10 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
type name changed from 'void' to 'bool'
type size changed from 0 to 8 (in bits)
+ [C] 'method std::pair<std::_Rb_tree_iterator<PtrData>, bool> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_insert_unique<PtrData>(PtrData&&)' has some indirect sub-type changes:
+ parameter 1 of type 'PtrData&&' changed:
+ rvalue reference type 'PtrData&& became an lvalue reference type: 'PtrData&'
+
[C] 'method void std::vector<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::_M_emplace_back_aux<const VarTable::Entry*>(const VarTable::Entry*&&)' has some indirect sub-type changes:
Please note that the symbol of this function is _ZNSt6vectorIPKN8VarTable5EntryESaIS3_EE19_M_emplace_back_auxIJS3_EEEvDpOT_
and it aliases symbol: _ZNSt6vectorIPKN8VarTable5EntryESaIS3_EE19_M_emplace_back_auxIIS3_EEEvDpOT_
@@ -1,4 +1,4 @@
-Functions changes summary: 82 Removed, 6 Changed (33 filtered out), 1081 Added functions
+Functions changes summary: 82 Removed, 7 Changed (32 filtered out), 1081 Added functions
Variables changes summary: 47 Removed, 1 Changed, 11 Added variables
Function symbols changes summary: 7 Removed, 76 Added function symbols not referenced by debug info
Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info
@@ -1172,7 +1172,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
[A] 'method void std::vector<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::vector<Iterator, void>(Iterator, Iterator, const std::vector<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::allocator_type&)'
[A] 'method std::vector<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::~vector()'
-6 functions with some indirect sub-type change:
+7 functions with some indirect sub-type change:
[C] 'method void Engine::fini_process(bool)' at offload_engine.cpp:184:1 has some indirect sub-type changes:
implicit parameter 0 of type 'Engine*' has sub-type changes:
@@ -1260,7 +1260,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} flags' changed:
type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
type size hasn't changed
- 1 data member changes (1 filtered):
+ 1 data member change:
anonymous data member at offset 0 (in bits) changed from:
struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
to:
@@ -1429,6 +1429,10 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
type name changed from 'void' to 'bool'
type size changed from 0 to 8 (in bits)
+ [C] 'method std::pair<std::_Rb_tree_iterator<PtrData>, bool> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_insert_unique<PtrData>(PtrData&&)' at stl_tree.h:1850:1 has some indirect sub-type changes:
+ parameter 1 of type 'PtrData&&' changed:
+ rvalue reference type 'PtrData&& became an lvalue reference type: 'PtrData&'
+
[C] 'method void std::vector<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::_M_emplace_back_aux<const VarTable::Entry*>(const VarTable::Entry*&&)' at vector.tcc:407:1 has some indirect sub-type changes:
Please note that the symbol of this function is _ZNSt6vectorIPKN8VarTable5EntryESaIS3_EE19_M_emplace_back_auxIJS3_EEEvDpOT_
and it aliases symbol: _ZNSt6vectorIPKN8VarTable5EntryESaIS3_EE19_M_emplace_back_auxIIS3_EEEvDpOT_
@@ -1,4 +1,4 @@
-Functions changes summary: 82 Removed, 6 Changed (33 filtered out), 1081 Added functions
+Functions changes summary: 82 Removed, 7 Changed (32 filtered out), 1081 Added functions
Variables changes summary: 47 Removed, 1 Changed, 11 Added variables
Function symbols changes summary: 7 Removed, 76 Added function symbols not referenced by debug info
Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info
@@ -1172,7 +1172,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
[A] 'method void std::vector<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::vector<Iterator, void>(Iterator, Iterator, const std::vector<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::allocator_type&)'
[A] 'method std::vector<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::~vector()'
-6 functions with some indirect sub-type change:
+7 functions with some indirect sub-type change:
[C] 'method void Engine::fini_process(bool)' at offload_engine.cpp:184:1 has some indirect sub-type changes:
implicit parameter 0 of type 'Engine*' has sub-type changes:
@@ -1260,7 +1260,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} flags' changed:
type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
type size hasn't changed
- 1 data member changes (1 filtered):
+ 1 data member change:
anonymous data member at offset 0 (in bytes) changed from:
struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
to:
@@ -1429,6 +1429,10 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
type name changed from 'void' to 'bool'
type size changed from 0 to 0x1 (in bytes)
+ [C] 'method std::pair<std::_Rb_tree_iterator<PtrData>, bool> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_insert_unique<PtrData>(PtrData&&)' at stl_tree.h:1850:1 has some indirect sub-type changes:
+ parameter 1 of type 'PtrData&&' changed:
+ rvalue reference type 'PtrData&& became an lvalue reference type: 'PtrData&'
+
[C] 'method void std::vector<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::_M_emplace_back_aux<const VarTable::Entry*>(const VarTable::Entry*&&)' at vector.tcc:407:1 has some indirect sub-type changes:
Please note that the symbol of this function is _ZNSt6vectorIPKN8VarTable5EntryESaIS3_EE19_M_emplace_back_auxIJS3_EEEvDpOT_
and it aliases symbol: _ZNSt6vectorIPKN8VarTable5EntryESaIS3_EE19_M_emplace_back_auxIIS3_EEEvDpOT_
@@ -1,4 +1,4 @@
-Functions changes summary: 82 Removed, 6 Changed (33 filtered out), 0 Added (1081 filtered out) functions
+Functions changes summary: 82 Removed, 7 Changed (32 filtered out), 0 Added (1081 filtered out) functions
Variables changes summary: 47 Removed, 1 Changed, 0 Added (11 filtered out) variables
Function symbols changes summary: 7 Removed, 0 Added (76 filtered out) function symbols not referenced by debug info
Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info
@@ -88,7 +88,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
[D] 'function void std::__unguarded_linear_insert<VarList::BufEntry*, __gnu_cxx::__ops::_Val_comp_iter<bool (*)(const VarList::BufEntry&, const VarList::BufEntry&)> >(VarList::BufEntry*, __gnu_cxx::__ops::_Val_comp_iter<bool (*)(const VarList::BufEntry&, const VarList::BufEntry&)>)'
[D] 'function void write_message(FILE*, int, __va_list_tag*)'
-6 functions with some indirect sub-type change:
+7 functions with some indirect sub-type change:
[C] 'method void Engine::fini_process(bool)' has some indirect sub-type changes:
implicit parameter 0 of type 'Engine*' has sub-type changes:
@@ -176,7 +176,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} flags' changed:
type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
type size hasn't changed
- 1 data member changes (1 filtered):
+ 1 data member change:
anonymous data member at offset 0 (in bits) changed from:
struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
to:
@@ -345,6 +345,10 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
type name changed from 'void' to 'bool'
type size changed from 0 to 8 (in bits)
+ [C] 'method std::pair<std::_Rb_tree_iterator<PtrData>, bool> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_insert_unique<PtrData>(PtrData&&)' has some indirect sub-type changes:
+ parameter 1 of type 'PtrData&&' changed:
+ rvalue reference type 'PtrData&& became an lvalue reference type: 'PtrData&'
+
[C] 'method void std::vector<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::_M_emplace_back_aux<const VarTable::Entry*>(const VarTable::Entry*&&)' has some indirect sub-type changes:
Please note that the symbol of this function is _ZNSt6vectorIPKN8VarTable5EntryESaIS3_EE19_M_emplace_back_auxIJS3_EEEvDpOT_
and it aliases symbol: _ZNSt6vectorIPKN8VarTable5EntryESaIS3_EE19_M_emplace_back_auxIIS3_EEEvDpOT_
@@ -1,4 +1,4 @@
-Functions changes summary: 82 Removed, 6 Changed (33 filtered out), 0 Added (1081 filtered out) functions
+Functions changes summary: 82 Removed, 7 Changed (32 filtered out), 0 Added (1081 filtered out) functions
Variables changes summary: 0 Removed (47 filtered out), 1 Changed, 0 Added (11 filtered out) variables
Function symbols changes summary: 7 Removed, 0 Added (76 filtered out) function symbols not referenced by debug info
Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info
@@ -124,7 +124,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
class std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > at allocator.h:108:1
1 base class insertion:
class std::allocator<std::__cxx11::basic_string<char> > at allocator.h:108:1
- 3 data member changes (1 filtered):
+ 2 data member changes (1 filtered):
type of 'std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_Map_pointer _M_map' changed:
typedef name changed from std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_Map_pointer to std::_Deque_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >::_Map_pointer at stl_deque.h:542:1
underlying type 'typedef std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::_Map_pointer' at stl_deque.h:123:1 changed:
@@ -137,17 +137,13 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
underlying type 'struct std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>' at stl_deque.h:106:1 changed:
type name changed from 'std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>' to 'std::_Deque_iterator<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> &, std::__cxx11::basic_string<char> *>'
type size hasn't changed
- 4 data member changes:
+ 1 data member changes (3 filtered):
type of 'std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::_Elt_pointer _M_cur' changed:
typedef name changed from std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::_Elt_pointer to std::_Deque_iterator<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> &, std::__cxx11::basic_string<char> *>::_Elt_pointer at stl_deque.h:111:1
underlying type 'typedef std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::__ptr_to' at stl_deque.h:116:1 changed:
entity changed from 'typedef std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::__ptr_to' to compatible type 'std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*'
and name of 'std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::_M_cur' changed to 'std::_Deque_iterator<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> &, std::__cxx11::basic_string<char> *>::_M_cur' at stl_deque.h:137:1
- name of 'std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::_M_first' changed to 'std::_Deque_iterator<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> &, std::__cxx11::basic_string<char> *>::_M_first' at stl_deque.h:138:1
- name of 'std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::_M_last' changed to 'std::_Deque_iterator<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> &, std::__cxx11::basic_string<char> *>::_M_last' at stl_deque.h:139:1
- name of 'std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::_M_node' changed to 'std::_Deque_iterator<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> &, std::__cxx11::basic_string<char> *>::_M_node' at stl_deque.h:140:1
and name of 'std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_Deque_impl::_M_start' changed to 'std::_Deque_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >::_Deque_impl::_M_start' at stl_deque.h:552:1
- name of 'std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_Deque_impl::_M_finish' changed to 'std::_Deque_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >::_Deque_impl::_M_finish' at stl_deque.h:553:1
and name of 'std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_impl' changed to 'std::_Deque_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >::_M_impl' at stl_deque.h:631:1
1 Removed function symbol not referenced by debug info:
@@ -0,0 +1,26 @@
+Functions changes summary: 0 Removed, 2 Changed, 0 Added functions
+Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
+
+2 functions with some indirect sub-type change:
+
+ [C] 'function void bar(S1*)' at test47-filter-void-ptr-change-v0.c:17:1 has some indirect sub-type changes:
+ parameter 1 of type 'S1*' has sub-type changes:
+ in pointed to type 'struct S1' at test47-filter-void-ptr-change-v1.c:8:1:
+ type size hasn't changed
+ 1 data member change:
+ type of 'POINTER m0' changed:
+ underlying type 'void*' changed:
+ in pointed to type 'void':
+ entity changed from 'void' to 'const char'
+ type size changed from 0 to 8 (in bits)
+
+ [C] 'function void foo(S0*)' at test47-filter-void-ptr-change-v0.c:13:1 has some indirect sub-type changes:
+ parameter 1 of type 'S0*' has sub-type changes:
+ in pointed to type 'struct S0' at test47-filter-void-ptr-change-v1.c:1:1:
+ type size hasn't changed
+ 1 data member change:
+ type of 'void* m0' changed:
+ in pointed to type 'void':
+ type name changed from 'void' to 'int'
+ type size changed from 0 to 32 (in bits)
+
@@ -7,5 +7,4 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
return type changed:
type name changed from 'return_type' to 'other_return_type'
type size hasn't changed
- no data member change (1 filtered);