aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/pt.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2021-11-03 09:29:47 -0400
committerJason Merrill <jason@redhat.com>2021-11-22 17:43:10 -0500
commit1df539fd197ef2427bdfa27156b92d2a857af949 (patch)
tree6c26231326dd01d472b8062465ec3a2f6f3fc92f /gcc/cp/pt.c
parent5440c88e61f5c624eb87e19801eef6eedf27e8ab (diff)
downloadgcc-1df539fd197ef2427bdfa27156b92d2a857af949.zip
gcc-1df539fd197ef2427bdfa27156b92d2a857af949.tar.gz
gcc-1df539fd197ef2427bdfa27156b92d2a857af949.tar.bz2
c++: remember pointer-to-member location
Jakub recently mentioned that a PTRMEM_CST has no location; let's give it a location wrapper. gcc/cp/ChangeLog: * typeck.c (build_x_unary_op): Set address location. (convert_member_func_to_ptr): Handle location wrapper. * pt.c (convert_nontype_argument): Likewise. gcc/testsuite/ChangeLog: * g++.dg/template/crash106.C: Adjust. * g++.dg/diagnostic/ptrtomem3.C: New test.
Diffstat (limited to 'gcc/cp/pt.c')
-rw-r--r--gcc/cp/pt.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index c73e035..288625e 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -7267,6 +7267,8 @@ convert_nontype_argument (tree type, tree expr, tsubst_flags_t complain)
const bool val_dep_p = value_dependent_expression_p (expr);
if (val_dep_p)
expr = canonicalize_expr_argument (expr, complain);
+ else
+ STRIP_ANY_LOCATION_WRAPPER (expr);
/* 14.3.2/5: The null pointer{,-to-member} conversion is applied
to a non-type argument of "nullptr". */