diff options
author | Marek Polacek <polacek@redhat.com> | 2020-10-24 15:26:27 -0400 |
---|---|---|
committer | Marek Polacek <polacek@redhat.com> | 2020-10-28 17:26:45 -0400 |
commit | 976e7ef1a2d54f46021f74d071d9fdb9631298f8 (patch) | |
tree | b75d70aa7e586590846694b818893cb4e165703d /gcc/cp/parser.c | |
parent | 122f0db27933e6e34e073c9c4d27a10801652ebd (diff) | |
download | gcc-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