From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15701 invoked by alias); 23 Feb 2010 10:23:37 -0000 Received: (qmail 15570 invoked by uid 48); 23 Feb 2010 10:23:26 -0000 Date: Tue, 23 Feb 2010 10:23:00 -0000 Message-ID: <20100223102326.15569.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug c/43128] [4.5 Regression] c-c++-common/pr41779.c doesn't work In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "manu at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2010-02/txt/msg02295.txt.bz2 ------- Comment #21 from manu at gcc dot gnu dot org 2010-02-23 10:23 ------- (In reply to comment #19) > > The present logic is: convert (with convert_and_check) both operands to a > common type, which may have excess precision; then, later, after producing > the tree for the result of the operation, wrap that in an > EXCESS_PRECISION_EXPR, using the semantic type, if there is a semantic > type different from the type with excess precision. This is only true for build_binary_op. In build_conditional_expr both operands are converted to the semantic type first, if I am reading the code correctly, so there is nothing to fix (in fact, I cannot build a testcase that misses the warning when using conditional expression). The code of build_binary_op is a bit complex, specially the interaction between result_type, final_type, buid_type, converted and real_result_type. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43128