From patchwork Sun Apr 26 11:11:14 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mikhail Maltsev X-Patchwork-Id: 464664 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 9C018140082 for ; Sun, 26 Apr 2015 21:11:35 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass reason="1024-bit key; unprotected key" header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b=qh+v666b; dkim-adsp=none (unprotected policy); dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:subject:content-type; q= dns; s=default; b=KJF4+b/ITKtHY6YwlkYoAR4h8tdh9fRUo57mdCjRif6qhX RKlrZTHBRBrJMiXr747r+/9He4ur4b2iN2c54obRQx7QV3/F4wV7+8iE9GkQB6YQ 8BzmD9mtBHhxtSvipsMgi6n1UgaSU6zFdB5Y+/DiiLxnFGwKzA+Algqkx1+jA= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:subject:content-type; s= default; bh=hZ92AuBMxfEaPulWoXAphCgLcO4=; b=qh+v666bkBmOa28Yh1Ma f9Dr2qra5JfPKLrfrCIzPOLx9GSEj8Rv6kgxLetwf5QYzHtPw3E02qf5KCcChwZa tJqloq/ddiylQEbAI6uwLTq+hlizh/np5iRWlNf8dO+5ZZa8Y66+BsURwRapiWzD WSqOb3ahASRTWPPjQdQs3cw= Received: (qmail 21717 invoked by alias); 26 Apr 2015 11:11:27 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 21698 invoked by uid 89); 26 Apr 2015 11:11:26 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.5 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, SPF_PASS, T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: fencepost.gnu.org Received: from fencepost.gnu.org (HELO fencepost.gnu.org) (208.118.235.10) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Sun, 26 Apr 2015 11:11:25 +0000 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39788) by fencepost.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1YmKT5-0003eQ-5i for gcc-patches@gnu.org; Sun, 26 Apr 2015 07:11:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YmKT1-00078n-OD for gcc-patches@gnu.org; Sun, 26 Apr 2015 07:11:22 -0400 Received: from mail-lb0-x22e.google.com ([2a00:1450:4010:c04::22e]:36795) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YmKT1-00078f-F3 for gcc-patches@gnu.org; Sun, 26 Apr 2015 07:11:19 -0400 Received: by lbbqq2 with SMTP id qq2so63909454lbb.3 for ; Sun, 26 Apr 2015 04:11:17 -0700 (PDT) X-Received: by 10.152.37.228 with SMTP id b4mr2003lak.117.1430046677914; Sun, 26 Apr 2015 04:11:17 -0700 (PDT) Received: from [192.168.123.200] ([77.41.78.126]) by mx.google.com with ESMTPSA id jq15sm4012291lab.27.2015.04.26.04.11.16 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 26 Apr 2015 04:11:16 -0700 (PDT) Message-ID: <553CC7D2.5050708@gmail.com> Date: Sun, 26 Apr 2015 14:11:14 +0300 From: Mikhail Maltsev User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: Jason Merrill , gcc-patches Subject: [Patch, C++, PR65882] Check tf_warning flag in build_new_op_1 X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:4010:c04::22e X-IsSubscribed: yes The attached patch was bootstrapped and regtested on x86_64-unknown-linux-gnu. diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 7bdf236..689d542 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -5677,8 +5677,9 @@ build_new_op_1 (location_t loc, enum tree_code code, int flags, tree arg1, case TRUTH_ORIF_EXPR: case TRUTH_AND_EXPR: case TRUTH_OR_EXPR: - warn_logical_operator (loc, code, boolean_type_node, - code_orig_arg1, arg1, code_orig_arg2, arg2); + if (complain & tf_warning) + warn_logical_operator (loc, code, boolean_type_node, + code_orig_arg1, arg1, code_orig_arg2, arg2); /* Fall through. */ case GT_EXPR: case LT_EXPR: @@ -5686,8 +5687,9 @@ build_new_op_1 (location_t loc, enum tree_code code, int flags, tree arg1, case LE_EXPR: case EQ_EXPR: case NE_EXPR: - if ((code_orig_arg1 == BOOLEAN_TYPE) - ^ (code_orig_arg2 == BOOLEAN_TYPE)) + if ((complain & tf_warning) + && ((code_orig_arg1 == BOOLEAN_TYPE) + ^ (code_orig_arg2 == BOOLEAN_TYPE))) maybe_warn_bool_compare (loc, code, arg1, arg2); /* Fall through. */ case PLUS_EXPR: diff --git a/gcc/testsuite/g++.dg/diagnostic/inhibit-warn.C b/gcc/testsuite/g++.dg/diagnostic/inhibit-warn.C new file mode 100644 index 0000000..5655eb4 --- /dev/null +++ b/gcc/testsuite/g++.dg/diagnostic/inhibit-warn.C @@ -0,0 +1,32 @@ +// PR c++/65882 +// { dg-do compile { target c++11 } } +// { dg-options "-Wbool-compare" } + +// Check that we don't ICE because of reentering error reporting routines while +// evaluating template parameters + +template +struct type_function { + static constexpr bool value = false; +}; + +template +struct dependent_type { + typedef int type; +}; + +template +typename dependent_type<(5 > type_function::value)>::type +bar(); + +template +typename dependent_type<(5 > type_function::value)>::type +foo() +{ + return bar(); +} + +int main() +{ + foo(); +}