|| is_pointer_diff(d)
|| is_reference_diff(d)
|| (is_qualified_type_diff(d)
+ && (!(d->has_local_changes() & LOCAL_NON_TYPE_CHANGE_KIND)))
+ || (is_function_decl_diff(d)
+ && (!(d->has_local_changes() & LOCAL_NON_TYPE_CHANGE_KIND)))
+ || (is_fn_parm_diff(d)
+ && (!(d->has_local_changes() & LOCAL_NON_TYPE_CHANGE_KIND)))
+ || (is_function_type_diff(d)
&& (!(d->has_local_changes() & LOCAL_NON_TYPE_CHANGE_KIND)))))
{
// Note that we handle private diff nodes differently from
canonical_diff->add_to_category
(SUPPRESSED_CATEGORY|PRIVATE_TYPE_CATEGORY);
}
+
+ if (const function_decl_diff *fn_diff = is_function_decl_diff(d))
+ if (!(d->has_local_changes() & LOCAL_NON_TYPE_CHANGE_KIND))
+ {
+ // d is a function diff that carries a local *type*
+ // change (that means it's a change to the function
+ // type). Let's see if the child function type diff
+ // node is suppressed. That would mean that we are
+ // instructed to show details of a diff that is deemed
+ // suppressed; this means the suppression conflicts with
+ // a local type change. In that case, let's follow what
+ // the user asked and suppress the function altogether,
+ if (function_type_diff_sptr fn_type_diff = fn_diff->type_diff())
+ if (fn_type_diff->is_suppressed())
+ d->add_to_category(SUPPRESSED_CATEGORY);
+ // If a node was suppressed, all the other nodes of its class
+ // of equivalence are suppressed too.
+ diff *canonical_diff = d->get_canonical_diff();
+ if (canonical_diff != d)
+ canonical_diff->add_to_category(SUPPRESSED_CATEGORY);
+ }
}
}
}; //end struct suppression_categorization_visitor
test-diff-suppr/test41-enumerator-changes-report-0.txt \
test-diff-suppr/test41-enumerator-changes-v0.cc \
test-diff-suppr/test41-enumerator-changes-v1.cc \
+test-diff-suppr/test43-suppr-direct-fn-subtype-suppr-1.txt \
+test-diff-suppr/test43-suppr-direct-fn-subtype-v0.cc \
+test-diff-suppr/test43-suppr-direct-fn-subtype-v0.o \
+test-diff-suppr/test43-suppr-direct-fn-subtype-v1.cc \
+test-diff-suppr/test43-suppr-direct-fn-subtype-v1.o \
+test-diff-suppr/test43-suppr-direct-fn-subtype-report-1.txt \
\
test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1 \
test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi \
"data/test-diff-suppr/test41-enumerator-changes-report-0.txt",
"output/test-diff-suppr/test41-enumerator-changes-report-0.txt"
},
+ {
+ "data/test-diff-suppr/test43-suppr-direct-fn-subtype-v0.o",
+ "data/test-diff-suppr/test43-suppr-direct-fn-subtype-v1.o",
+ "",
+ "",
+ "data/test-diff-suppr/test43-suppr-direct-fn-subtype-suppr-1.txt",
+ "--no-default-suppression",
+ "data/test-diff-suppr/test43-suppr-direct-fn-subtype-report-1.txt",
+ "output/test-diff-suppr/test43-suppr-direct-fn-subtype-report-1.txt"
+ },
// This should be the last entry
{NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
};