PR c++/80979
* name-lookup.c (adl_class_only): Don't add visible friends.
From-SVN: r248922
+2017-06-06 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/80979
+ * name-lookup.c (adl_class_only): Don't add visible friends.
+
2017-06-05 Volker Reichelt <v.reichelt@netcologne.de>
* parser.c (cp_parser_base_specifier): Fix typos in error messages.
if (CP_DECL_CONTEXT (fn) != context)
continue;
+ /* Only interested in anticipated friends. (Non-anticipated
+ ones will have been inserted during the namespace
+ adl.) */
+ if (!DECL_ANTICIPATED (fn))
+ continue;
+
/* Template specializations are never found by name lookup.
(Templates themselves can be found, but not template
specializations.) */
--- /dev/null
+// pr C++/80979 ICE with late discovery of using directives during ADL
+// of a friend declaration.
+
+namespace Tiny {
+ class Handsome {};
+ void Dahl (Handsome &, Handsome &);
+
+ namespace Jack {
+ class Vladof {
+ friend void Dahl (Vladof &, Vladof &);
+ };
+ void Dahl (Vladof &, Vladof &);
+ }
+
+ struct BDonk {};
+
+ namespace Tina {
+ void Dahl (BDonk &, Jack::Vladof &);
+ }
+ using Tina::Dahl;
+}
+
+void BoomBoom (Tiny::BDonk &vault, Tiny::Jack::Vladof &hunter)
+{
+ Dahl (vault, hunter);
+}