From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12782 invoked by alias); 10 Jan 2014 01:00:25 -0000 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 Received: (qmail 12723 invoked by uid 48); 10 Jan 2014 01:00:19 -0000 From: "pinskia at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/59744] miscompilation of unsigned comparison on aarch64 Date: Fri, 10 Jan 2014 01:00:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Version: 4.9.0 X-Bugzilla-Keywords: wrong-code X-Bugzilla-Severity: normal X-Bugzilla-Who: pinskia at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: keywords bug_status cf_reconfirmed_on everconfirmed Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2014-01/txt/msg01031.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59744 Andrew Pinski changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |wrong-code Status|UNCONFIRMED |NEW Last reconfirmed| |2014-01-10 Ever confirmed|0 |1 --- Comment #1 from Andrew Pinski --- (insn 14 13 15 2 (set (reg:CC_SWP 66 cc) (compare:CC_SWP (neg:DI (reg:DI 0 x0 [ offset ])) (reg:DI 1 x1 [orig:85 D.3895 ] [85]))) t7.c:11 114 {*compare_negdi} (expr_list:REG_DEAD (reg:DI 1 x1 [orig:85 D.3895 ] [85]) (expr_list:REG_DEAD (reg:DI 0 x0 [ offset ]) (nil)))) --- CUT --- Here is a testcase that fails at -O1 and above without any arguments. int a[2] = { 10, 20 }; int is_bigger (long, int) __attribute__((noinline,noclone)); int is_bigger (long offset, int index) { unsigned long size = -offset; if (size > a[index]) return 1; return 0; } int main (int argc, char** argv) { long v; if (is_bigger(0, 0)) __builtin_abort (); if (!is_bigger(1, 0)) __builtin_abort (); if (is_bigger(-10, 0)) __builtin_abort (); if (!is_bigger(10, 0)) __builtin_abort (); return 0; }