is_data_member(const shared_ptr<decl_base>&);
shared_ptr<array_type_def>
-is_array_def(const shared_ptr<type_base> decl);
+is_array_type(const shared_ptr<type_base> decl);
void
set_data_member_offset(shared_ptr<var_decl>, size_t);
return false;
break;
case type_suppression::ARRAY_TYPE_KIND:
- if (!is_array_def(ft) && !is_array_def(st))
+ if (!is_array_type(ft) && !is_array_type(st))
return false;
break;
case type_suppression::TYPEDEF_TYPE_KIND:
if (!type_decl)
return result;
- size_t type_size;
- if (!die_unsigned_constant_attribute(&type_die,
- DW_AT_byte_size,
- type_size))
- return result;
-
type_base_sptr type = is_type(type_decl);
assert(type);
t.reset(new qualified_type_def(strip_typedef(ty->get_underlying_type()),
ty->get_cv_quals(),
ty->get_location()));
+ else if (const array_type_def_sptr ty = is_array_type(t))
+ t.reset(new array_type_def(strip_typedef(ty->get_element_type()),
+ ty->get_subranges(),
+ ty->get_location()));
else if (const method_type_sptr ty = is_method_type(t))
{
function_decl::parameters parm;
///
/// @return true iff decl is an array_type_def.
array_type_def_sptr
-is_array_def(const type_base_sptr decl)
+is_array_type(const type_base_sptr decl)
{return dynamic_pointer_cast<array_type_def>(decl);}
/// Tests whether a decl is a template.
if (is_member_decl(this) && get_member_is_static(this))
result = "static ";
- if(array_type_def_sptr t = is_array_def(get_type()))
+ if(array_type_def_sptr t = is_array_type(get_type()))
result += get_type_declaration(t->get_element_type())->get_qualified_name()
+ " " + get_qualified_name() + t->get_subrange_representation();
else
test-diff-filter/test23-redundant-fn-parm-change-report-0.txt \
test-diff-filter/test23-redundant-fn-parm-change-v0.c \
test-diff-filter/test23-redundant-fn-parm-change-v1.c \
+test-diff-filter/libtest24-compatible-vars-v0.so \
+test-diff-filter/libtest24-compatible-vars-v1.so \
+test-diff-filter/test24-compatible-vars-report-0.txt \
+test-diff-filter/test24-compatible-vars-report-1.txt \
+test-diff-filter/test24-compatible-vars-v0.c \
+test-diff-filter/test24-compatible-vars-v1.c \
\
test-diff-suppr/test0-type-suppr-v0.cc \
test-diff-suppr/test0-type-suppr-v1.cc \
--- /dev/null
+Functions changes summary: 0 Removed, 0 Changed, 0 Added function
+Variables changes summary: 0 Removed, 0 Changed (1 filtered out), 0 Added variable
+
--- /dev/null
+Functions changes summary: 0 Removed, 0 Changed, 0 Added function
+Variables changes summary: 0 Removed, 1 Changed, 0 Added variable
+
+1 Changed variable:
+ 'S a[2]' was changed to 'typedef_of_S a[2]':
+ type of variable changed:
+ array element type 'S' changed:
+ entity changed from 'struct S' to compatible type 'typedef typedef_of_S'
+
--- /dev/null
+/* Compile with:
+ gcc -Wall -g -shared -o libtest24-compatible-vars-v0.so test24-compatible-vars-v0.c
+ */
+
+struct S
+{
+ int m0;
+};
+
+struct S a[2];
--- /dev/null
+/* Compile with:
+ gcc -Wall -g -fPIC -shared -o libtest24-compatible-vars-v1.so test24-compatible-vars-v1.c
+ */
+
+struct S
+{
+ int m0;
+};
+
+typedef struct S typedef_of_S;
+
+typedef_of_S a[2];
"data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt ",
"output/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt ",
},
+ {
+ "data/test-diff-filter/libtest24-compatible-vars-v0.so",
+ "data/test-diff-filter/libtest24-compatible-vars-v1.so",
+ "",
+ "data/test-diff-filter/test24-compatible-vars-report-0.txt ",
+ "output/test-diff-filter/test24-compatible-vars-report-0.txt ",
+ },
+ {
+ "data/test-diff-filter/libtest24-compatible-vars-v0.so",
+ "data/test-diff-filter/libtest24-compatible-vars-v1.so",
+ "--harmless",
+ "data/test-diff-filter/test24-compatible-vars-report-1.txt ",
+ "output/test-diff-filter/test24-compatible-vars-report-1.txt ",
+ },
// This should be the last entry
{NULL, NULL, NULL, NULL, NULL}
};