From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13717 invoked by alias); 28 Jan 2003 12:56:00 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 13697 invoked by uid 71); 28 Jan 2003 12:56:00 -0000 Resent-Date: 28 Jan 2003 12:56:00 -0000 Resent-Message-ID: <20030128125600.13695.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, Falk Hueffner Received: (qmail 9834 invoked from network); 28 Jan 2003 12:51:57 -0000 Received: from unknown (HELO mailout07.sul.t-online.com) (194.25.134.83) by 172.16.49.205 with SMTP; 28 Jan 2003 12:51:57 -0000 Received: from fwd02.sul.t-online.de by mailout07.sul.t-online.com with smtp id 18dVDX-0006q7-08; Tue, 28 Jan 2003 13:51:55 +0100 Received: from juist (520046482682-0001@[217.230.16.198]) by fmrl02.sul.t-online.com with esmtp id 18dVDO-05FZuCC; Tue, 28 Jan 2003 13:51:46 +0100 Received: from falk by juist with local (Exim 3.36 #1 (Debian)) id 18dVDL-00010u-00 for ; Tue, 28 Jan 2003 13:51:43 +0100 Message-Id: Date: Tue, 28 Jan 2003 12:56:00 -0000 From: Falk Hueffner To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: 3.113 Subject: c/9475: Wrong ffs results X-SW-Source: 2003-01/txt/msg01579.txt.bz2 List-Id: >Number: 9475 >Category: c >Synopsis: Wrong ffs results >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: wrong-code >Submitter-Id: net >Arrival-Date: Tue Jan 28 12:56:00 UTC 2003 >Closed-Date: >Last-Modified: >Originator: Falk Hueffner >Release: 3.4 20030128 (experimental) >Organization: >Environment: System: Linux juist 2.5.59 #4 Sat Jan 18 12:46:41 CET 2003 alpha unknown unknown GNU/Linux Architecture: alpha host: alphaev68-unknown-linux-gnu build: alphaev68-unknown-linux-gnu target: alphaev68-unknown-linux-gnu configured with: ../configure --enable-languages=c++ --disable-nls >Description: In certain contexts, the ffs builtin gives wrong results. It does not happen when special purpose instructions are used instead of a libcall (-mcpu=ev67). The problem is also not present in gcc 3.2, or in gcc 3.4 20030116 (so it looks like it has been introduced very recently). >How-To-Repeat: % cat ffs.c int printf(const char *format, ...); int main(void) { int i; for (i = 0; i < 8; i++) { unsigned j = 1u << i; printf("%2d %10u %2d\n", i, j, __builtin_ffs(j)); } return 0; } % gcc -O1 -W -Wall -mcpu=ev4 ffs.c && ./a.out 0 1 1 1 2 0 2 4 0 3 8 0 4 16 0 5 32 0 6 64 0 7 128 0 The correct output would be: 0 1 1 1 2 2 2 4 3 3 8 4 4 16 5 5 32 6 6 64 7 7 128 8 >Fix: >Release-Note: >Audit-Trail: >Unformatted: