diff options
author | Jason Merrill <jason@redhat.com> | 2019-12-11 11:48:44 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2019-12-11 11:48:44 -0500 |
commit | 7c0a61870e0f8fe8ad1e21594f92ab454ca60c0d (patch) | |
tree | 380a2b1c71f1a62321be4fff8ab84de4a935f3ae /gcc | |
parent | 3e7a892cc5bdeb5518888f2ca176d96cc720ec5f (diff) | |
download | gcc-7c0a61870e0f8fe8ad1e21594f92ab454ca60c0d.zip gcc-7c0a61870e0f8fe8ad1e21594f92ab454ca60c0d.tar.gz gcc-7c0a61870e0f8fe8ad1e21594f92ab454ca60c0d.tar.bz2 |
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: r279229
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/cp/name-lookup.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/overload/bit-field1.C | 18 |
3 files changed, 22 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ad08ff0..4cb79b2 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2019-12-11 Jason Merrill <jason@redhat.com> + PR c++/92859 - ADL and bit-field. + * name-lookup.c: Use unlowered_expr_type. + PR c++/92446 - deduction of class NTTP. * pt.c (deducible_expression): Look through VIEW_CONVERT_EXPR. diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index e82eaf2..e64cd9a 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -908,7 +908,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 0000000..318caaa --- /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); +} |