From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22152 invoked by alias); 4 Mar 2011 18:19:49 -0000 Received: (qmail 22138 invoked by uid 22791); 4 Mar 2011 18:19:48 -0000 X-SWARE-Spam-Status: No, hits=-2.8 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from localhost (HELO gcc.gnu.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 04 Mar 2011 18:19:44 +0000 From: "jakub at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug debug/47991] New: [4.6 Regression] Var-tracking ICE on s390x *setmem_long insn X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: debug X-Bugzilla-Keywords: ice-on-valid-code X-Bugzilla-Severity: normal X-Bugzilla-Who: jakub at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: jakub at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Date: Fri, 04 Mar 2011 18:19:00 -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 X-SW-Source: 2011-03/txt/msg00429.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47991 Summary: [4.6 Regression] Var-tracking ICE on s390x *setmem_long insn Product: gcc Version: 4.6.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: debug AssignedTo: jakub@gcc.gnu.org ReportedBy: jakub@gcc.gnu.org Target: s390x-linux /* { dg-do compile } */ /* { dg-options "-g -Os" } */ typedef __SIZE_TYPE__ size_t; extern inline __attribute__ ((__always_inline__)) void * memset (void *x, int y, size_t z) { return __builtin___memset_chk (x, y, z, __builtin_object_size (x, 0)); } void foo (unsigned char *x, unsigned char *y, unsigned char *z, unsigned char *w, unsigned int v, int u, int t) { int i; for (i = 0; i < t; i++) { memset (z, x[0], v); memset (w, y[0], v); x += u; } __builtin_memcpy (z, x, u); } ICEs on s390x-linux in var-tracking, because (insn 56 71 57 5 (parallel [ (clobber (reg:TI 6 %r6)) (set (mem:BLK (subreg:DI (reg:TI 6 %r6) 0) [0 A8]) (reg:DI 10 %r10 [95])) (use (reg:TI 6 %r6)) (use (reg:TI 2 %r2)) (clobber (reg:CC 33 %cc)) ]) pr47372.i:9 115 {*setmem_long} (expr_list:REG_DEAD (reg:DI 10 %r10 [95]) (expr_list:REG_DEAD (reg:DI 7 %r7) (expr_list:REG_UNUSED (reg:CC 33 %cc) (expr_list:REG_UNUSED (reg:TI 6 %r6) (nil)))))) is really weird. But we already allow (set (mem:BLK ...) (const_int ...)) for memset, and while this one is much worse than that, let's workaround it in var-tracking too. Not sure if this is a problem in 4.5 too, certainly not in 4.4 which didn't have VTA.