aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/call.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2021-05-25 17:24:38 +0200
committerJakub Jelinek <jakub@redhat.com>2021-05-25 17:24:38 +0200
commitad52d89808a947264397e920d7483090d4108f7b (patch)
tree2fdf00fd50be88d58880aed5e5302bdc24c6529e /gcc/cp/call.c
parent1d3707a52d6b8a3054248b4291719150937db309 (diff)
downloadgcc-ad52d89808a947264397e920d7483090d4108f7b.zip
gcc-ad52d89808a947264397e920d7483090d4108f7b.tar.gz
gcc-ad52d89808a947264397e920d7483090d4108f7b.tar.bz2
c++: Avoid -Wunused-value false positives on nullptr passed to ellipsis [PR100666]
When passing expressions with decltype(nullptr) type with side-effects to ellipsis, we pass (void *)0 instead, but for the side-effects evaluate them on the lhs of a COMPOUND_EXPR. Unfortunately that means we warn about it if the expression is a call to nodiscard marked function, even when the result is really used, just needs to be transformed. Fixed by adding a warning_sentinel. 2021-05-25 Jakub Jelinek <jakub@redhat.com> PR c++/100666 * call.c (convert_arg_to_ellipsis): For expressions with NULLPTR_TYPE and side-effects, temporarily disable -Wunused-result warning when building COMPOUND_EXPR. * g++.dg/cpp1z/nodiscard8.C: New test. * g++.dg/cpp1z/nodiscard9.C: New test.
Diffstat (limited to 'gcc/cp/call.c')
-rw-r--r--gcc/cp/call.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index cfccf27..3076fe6 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -8178,7 +8178,10 @@ convert_arg_to_ellipsis (tree arg, tsubst_flags_t complain)
{
arg = mark_rvalue_use (arg);
if (TREE_SIDE_EFFECTS (arg))
- arg = cp_build_compound_expr (arg, null_pointer_node, complain);
+ {
+ warning_sentinel w(warn_unused_result);
+ arg = cp_build_compound_expr (arg, null_pointer_node, complain);
+ }
else
arg = null_pointer_node;
}