From: Jason Merrill Date: Fri, 13 Dec 2019 05:10:06 +0000 (-0500) Subject: PR c++/92859 - ADL and bit-field. X-Git-Tag: releases/gcc-9.3.0~315 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=20de63acca451d7097530cf02cbb8e016e1beda9;p=thirdparty%2Fgcc.git PR c++/92859 - ADL and bit-field. We also need unlowered_expr_type when considering associated types for ADL. * name-lookup.c: Use unlowered_expr_type. From-SVN: r279334 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index bda8304df575..5b05e84b4c3a 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2019-12-11 Jason Merrill + + PR c++/92859 - ADL and bit-field. + * name-lookup.c: Use unlowered_expr_type. + 2019-12-11 Jason Merrill PR c++/92446 - deduction of class NTTP. diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index 29004d920b10..4fea4c04c66d 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -909,7 +909,7 @@ name_lookup::adl_expr (tree expr) if (TREE_TYPE (expr) != unknown_type_node) { - adl_type (TREE_TYPE (expr)); + adl_type (unlowered_expr_type (expr)); return; } diff --git a/gcc/testsuite/g++.dg/overload/bit-field1.C b/gcc/testsuite/g++.dg/overload/bit-field1.C new file mode 100644 index 000000000000..318caaaeb657 --- /dev/null +++ b/gcc/testsuite/g++.dg/overload/bit-field1.C @@ -0,0 +1,18 @@ +// PR c++/92859 +// { dg-do compile { target c++11 } } + +void f(int) = delete; + +struct ES { + enum E { v }; + friend void f(E) { } +}; + +struct S { + ES::E e : 1; +}; + +int main() { + S s{}; + f (s.e); +}