From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26094 invoked by alias); 7 Mar 2004 03:17:30 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 26087 invoked by uid 48); 7 Mar 2004 03:17:30 -0000 Date: Sun, 07 Mar 2004 03:17:00 -0000 Message-ID: <20040307031730.26086.qmail@sources.redhat.com> From: "dje at gcc dot gnu dot org" To: gcc-bugs@gcc.gnu.org In-Reply-To: <20040305161431.14449.joerg.richter@pdv-fs.de> References: <20040305161431.14449.joerg.richter@pdv-fs.de> Reply-To: gcc-bugzilla@gcc.gnu.org Subject: [Bug middle-end/14449] long long & unsigned calculation gives wrong result X-Bugzilla-Reason: CC X-SW-Source: 2004-03/txt/msg00862.txt.bz2 List-Id: ------- Additional Comments From dje at gcc dot gnu dot org 2004-03-07 03:17 ------- Using -mcpu=powerpc produces the correct result. The problem appears to be a bug in expr.c:expand_expr_real() for MULT_EXPR case when umul_widen_optab does not exist and smul_widen_optab does exist. For the example, umulsidi3 does not exist for POWER and common mode, so mulsidi3 is chosen, but the result is not adjusted correctly (not adjusted at all) to account for unsigned.. -- What |Removed |Added ---------------------------------------------------------------------------- Component|target |middle-end http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14449