From 3799a5b853ef08d781407009427f9ddc9a6ec7be Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Fri, 10 Feb 2017 16:33:45 +0000 Subject: re PR c++/79184 (-Wint-in-bool-context triggered erroneously in template parameter) PR c++/79184 * cvt.c (ocp_convert): Add a sentinel against -Wint-in-bool-context if warnings shouldn't be given. * g++.dg/warn/Wint-in-bool-context-1.C: New. From-SVN: r245335 --- gcc/cp/ChangeLog | 4 ++++ gcc/cp/cvt.c | 10 +++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) (limited to 'gcc/cp') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 7f113ec..5ea0c93 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -4,6 +4,10 @@ * pt.c (type_dependent_expression_p): Check if the expression type is null. + PR c++/79184 + * cvt.c (ocp_convert): Add a sentinel against -Wint-in-bool-context + if warnings shouldn't be given. + 2017-02-10 Paolo Carlini PR c++/71737 diff --git a/gcc/cp/cvt.c b/gcc/cp/cvt.c index ae9991a..5f4b5e3 100644 --- a/gcc/cp/cvt.c +++ b/gcc/cp/cvt.c @@ -798,7 +798,15 @@ ocp_convert (tree type, tree expr, int convtype, int flags, to the underlying type first. */ if (SCOPED_ENUM_P (intype) && (convtype & CONV_STATIC)) e = build_nop (ENUM_UNDERLYING_TYPE (intype), e); - return cp_truthvalue_conversion (e); + if (complain & tf_warning) + return cp_truthvalue_conversion (e); + else + { + /* Prevent bogus -Wint-in-bool-context warnings coming + from c_common_truthvalue_conversion down the line. */ + warning_sentinel w (warn_int_in_bool_context); + return cp_truthvalue_conversion (e); + } } converted = convert_to_integer_maybe_fold (type, e, dofold); -- cgit v1.1