From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14765 invoked by alias); 18 Aug 2005 11:52:12 -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 14499 invoked by uid 48); 18 Aug 2005 11:51:40 -0000 Date: Thu, 18 Aug 2005 11:52:00 -0000 Message-ID: <20050818115139.14498.qmail@sourceware.org> From: "sebastian dot pop at cri dot ensmp dot fr" To: gcc-bugs@gcc.gnu.org In-Reply-To: <20050815225031.23410.danglin@gcc.gnu.org> References: <20050815225031.23410.danglin@gcc.gnu.org> Reply-To: gcc-bugzilla@gcc.gnu.org Subject: [Bug middle-end/23410] [4.1 Regression] FAIL: gcc.c-torture/execute/950612-1.c execution, at -Os and -O3 X-Bugzilla-Reason: CC X-SW-Source: 2005-08/txt/msg02098.txt.bz2 List-Id: ------- Additional Comments From sebastian dot pop at cri dot ensmp dot fr 2005-08-18 11:51 ------- Reduced testcase is: unsigned long long f4 (unsigned long long diff) { return ((unsigned long long) ((signed long long) diff < 0 ? -diff : diff)); } main () { int i; for (i = 0; i <= 10; i++) if (f4 ((long long) -i) != i) abort (); exit (0); } And the problem is in VRP: Visiting statement: diff.0D.1338_6 = (long long intD.5) diffD.1337_4; (analyze_scalar_evolution (loop_nb = 1) (scalar = diff.0_6) (get_scalar_evolution (scalar = diff.0_6) (scalar_evolution = (long long int) {0, +, ffffffffffffffff}_1)) (set_scalar_evolution (scalar = diff.0_6) (scalar_evolution = (long long int) {0, +, ffffffffffffffff}_1)) ) (instantiate_parameters (loop_nb = 1) (chrec = (long long int) {0, +, ffffffffffffffff}_1) (res = (long long int) {0, +, ffffffffffffffff}_1)) Found new range for diff.0_6: [0, 0] The computation of the min bound is not correct. I'm working on a patch. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23410