aboutsummaryrefslogtreecommitdiff
path: root/libphobos/src/etc
diff options
context:
space:
mode:
authorNathaniel Shead <nathanieloshead@gmail.com>2025-08-31 14:47:43 +1000
committerNathaniel Shead <nathanieloshead@gmail.com>2025-09-06 20:38:14 +1000
commitc39dbb652fafbb06507d23dcec6627ac9a9398cf (patch)
tree6d04225fb82550fb035614cef923fd085c037447 /libphobos/src/etc
parentdb7a807ef26de75abb75eec7834a95b9a9b98e5d (diff)
downloadgcc-master.zip
gcc-master.tar.gz
gcc-master.tar.bz2
c++/modules: Support ADL on non-discarded GM entities [PR121705]HEADtrunkmaster
[basic.lookup.argdep] p4 says that ADL also finds declarations of functions or function templates from a point of lookup within the module, only ignoring discarded (or internal) GM entities. To implement this we need to create bindings for these entities so that we can guarantee that name lookup will discover they exist. This raises some complications, though, as we ideally would like to avoid having bindings that contain no declarations, or emitting GM namespaces that only contain discarded or internal functions. This patch does this by additionally creating a new binding whenever we call make_dependency on a non-EK_FOR_BINDING decl. We don't do this for using-decls, as at the point of use of a GM entity we no longer know whether we called through a using-decl or the declaration directly; however, this behaviour is explicitly supported by [module.global.frag] p3.6. Creating these bindings caused g++.dg/modules/default-arg-4_* to fail. It turns out that this makes the behaviour look identical to g++.dg/modules/default-arg-5, which is incorrectly dg-error-ing default value redeclarations (we only currently error because of PR c++/99000). This patch removes the otherwise identical test and turns the dg-errors into xfailed dg-bogus. As a drive-by fix this also fixes an ICE when debug printing friend function instantiations. PR c++/121705 PR c++/117658 gcc/cp/ChangeLog: * module.cc (depset::hash::make_dependency): Make bindings for GM functions. (depset::hash::add_binding_entity): Adjust comment. (depset::hash::add_deduction_guides): Add log. * ptree.cc (cxx_print_xnode): Handle friend functions where TI_TEMPLATE is an OVERLOAD or IDENTIFIER. gcc/testsuite/ChangeLog: * g++.dg/modules/default-arg-4_a.C: XFAIL bogus errors. * g++.dg/modules/default-arg-4_b.C: Likewise. * g++.dg/modules/default-arg-5_a.C: Remove duplicate test. * g++.dg/modules/default-arg-5_b.C: Likewise. * g++.dg/modules/adl-9_a.C: New test. * g++.dg/modules/adl-9_b.C: New test. * g++.dg/modules/gmf-5.C: New test. Signed-off-by: Nathaniel Shead <nathanieloshead@gmail.com> Reviewed-by: Jason Merrill <jason@redhat.com>
Diffstat (limited to 'libphobos/src/etc')
0 files changed, 0 insertions, 0 deletions