Ping for this patch series. Since trivial relocation has been removed I suppose patch 7/7 is no longer required.
On Sun, Oct 26, 2025 at 01:01:10PM +1100, Nathaniel Shead wrote: > This patch series adds some more explanatory diagnostics for traits, > and fixes some issues I found on the way. > > The only remaining traits without explanatory diagnostics are either > those where there's no useful explanation to give (e.g. is_const), or > for traits where they are based around flags set during class creation > and so there's no easy predicate to hook into to give diagnostics for > (e.g. is_standard_layout). I would like to explore a way to give better > diagnostics for the latter kind as well but that's unlikely for GCC16. > > All patches successfully bootstrapped and regtested on > x86_64-pc-linux-gnu. > > Nathaniel Shead (7): > c++: Check for error_mark_node in diagnose_trait_expr > c++: Adjust location of is_*_base_of diagnostics > c++: Fix diagnostics for __is_destructable > c++: Add detailed diagnostics for > __builtin_has_unique_object_representations > c++: Add detailed diagnostics for __is_layout_compatible > c++: Add detailed diagnostics for > __is_pointer_interconvertible_base_of > c++: Add detailed diagnostics for (and fix) relocation builtins > > gcc/cp/constraint.cc | 30 +- > gcc/cp/cp-tree.h | 14 +- > gcc/cp/method.cc | 32 +- > gcc/cp/semantics.cc | 83 ++- > gcc/cp/tree.cc | 565 +++++++++++++----- > gcc/cp/typeck.cc | 146 ++++- > .../cpp1z/has-unique-obj-representations5.C | 45 ++ > .../g++.dg/cpp26/trivially-relocatable12.C | 54 ++ > .../g++.dg/cpp26/trivially-relocatable13.C | 106 ++++ > .../g++.dg/cpp2a/is-layout-compatible4.C | 86 +++ > .../is-pointer-interconvertible-base-of2.C | 29 + > gcc/testsuite/g++.dg/ext/is_destructible3.C | 4 + > .../ext/is_virtual_base_of_diagnostic2.C | 4 +- > 13 files changed, 955 insertions(+), 243 deletions(-) > create mode 100644 > gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations5.C > create mode 100644 gcc/testsuite/g++.dg/cpp26/trivially-relocatable12.C > create mode 100644 gcc/testsuite/g++.dg/cpp26/trivially-relocatable13.C > create mode 100644 gcc/testsuite/g++.dg/cpp2a/is-layout-compatible4.C > create mode 100644 > gcc/testsuite/g++.dg/cpp2a/is-pointer-interconvertible-base-of2.C > > -- > 2.51.0 >
