aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/parser.c
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2020-10-24 15:26:27 -0400
committerMarek Polacek <polacek@redhat.com>2020-10-28 17:26:45 -0400
commit976e7ef1a2d54f46021f74d071d9fdb9631298f8 (patch)
treeb75d70aa7e586590846694b818893cb4e165703d /gcc/cp/parser.c
parent122f0db27933e6e34e073c9c4d27a10801652ebd (diff)
downloadgcc-976e7ef1a2d54f46021f74d071d9fdb9631298f8.zip
gcc-976e7ef1a2d54f46021f74d071d9fdb9631298f8.tar.gz
gcc-976e7ef1a2d54f46021f74d071d9fdb9631298f8.tar.bz2
c++: Prevent warnings for value-dependent exprs [PR96742]
Here, in r11-155, I changed the call to uses_template_parms to type_dependent_expression_p_push to avoid a crash in C++98 in value_dependent_expression_p on a non-constant expression. But that prompted a host of complaints that we now warn for value-dependent expressions in templates. Those warnings are technically valid, but people still don't want them because they're awkward to avoid. This patch uses value_dependent_expression_p or type_dependent_expression_p. But make sure that we don't ICE in value_dependent_expression_p by checking potential_constant_expression first. gcc/cp/ChangeLog: PR c++/96675 PR c++/96742 * pt.c (tsubst_copy_and_build): Call value_dependent_expression_p or type_dependent_expression_p instead of type_dependent_expression_p_push. But only call value_dependent_expression_p for expressions that are potential_constant_expression. gcc/testsuite/ChangeLog: PR c++/96675 PR c++/96742 * g++.dg/warn/Wdiv-by-zero-3.C: Turn dg-warning into dg-bogus. * g++.dg/warn/Wtautological-compare3.C: New test. * g++.dg/warn/Wtype-limits5.C: New test. * g++.old-deja/g++.pt/crash10.C: Remove dg-warning.
Diffstat (limited to 'gcc/cp/parser.c')
0 files changed, 0 insertions, 0 deletions