[3/3] abidiff: Omit declaration-only type size 0 diffs.
Commit Message
When reporting declaration-only type changes, the size is reported as
changing to or from 0, which is not correct. The declaration type is
of unknown size. This patch eliminates such size reports.
* src/abg-reporter-priv.cc (report_size_and_alignment_changes):
Filter out declaration-only / defined type size changes
unconditionally.
* tests/data/test-abidiff-exit/test-decl-struct-report.txt:
Update test.
Signed-off-by: Giuliano Procida <gprocida@google.com>
---
src/abg-reporter-priv.cc | 9 ++++-----
tests/data/test-abidiff-exit/test-decl-struct-report.txt | 2 --
2 files changed, 4 insertions(+), 7 deletions(-)
Comments
Giuliano Procida <gprocida@google.com> a ?crit:
> When reporting declaration-only type changes, the size is reported as
> changing to or from 0, which is not correct. The declaration type is
> of unknown size. This patch eliminates such size reports.
>
> * src/abg-reporter-priv.cc (report_size_and_alignment_changes):
> Filter out declaration-only / defined type size changes
> unconditionally.
> * tests/data/test-abidiff-exit/test-decl-struct-report.txt:
> Update test.
Applied to master, thanks!
Cheers,
@@ -714,12 +714,11 @@ report_size_and_alignment_changes(type_or_decl_base_sptr first,
class_or_union_sptr first_class = is_class_or_union_type(first),
second_class = is_class_or_union_type(second);
- if (filtering::has_class_decl_only_def_change(first_class, second_class)
- && !(ctxt->get_allowed_category() & CLASS_DECL_ONLY_DEF_CHANGE_CATEGORY))
+ if (filtering::has_class_decl_only_def_change(first_class, second_class))
// So these two classes differ only by the fact that one is the
- // declaration-only form of the second. And the user asked that
- // this kind of change be filtered out, so do not report any size
- // change due to this.
+ // declaration-only form of the second. The declaration-only class
+ // is of unknown size (recorded as 0) and it is not meaningful to
+ // report a size change.
return;
unsigned fs = f->get_size_in_bits(), ss = s->get_size_in_bits(),
@@ -7,13 +7,11 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
parameter 1 of type 'const embodied*' has sub-type changes:
in pointed to type 'const embodied':
in unqualified underlying type 'struct embodied' at test-decl-struct-v1.c:1:1:
- type size changed from 0 to 32 (in bits)
type struct embodied was a declaration-only type and is now a defined type
[C] 'function void reg2(const disembodied*)' at test-decl-struct-v1.c:5:1 has some indirect sub-type changes:
parameter 1 of type 'const disembodied*' has sub-type changes:
in pointed to type 'const disembodied':
in unqualified underlying type 'struct disembodied':
- type size changed from 32 to 0 (in bits)
type struct disembodied was a defined type and is now a declaration-only type