From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11224 invoked by alias); 23 Oct 2011 13:06:13 -0000 Received: (qmail 11212 invoked by uid 22791); 23 Oct 2011 13:06:12 -0000 X-SWARE-Spam-Status: No, hits=-2.8 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00,TW_AV,TW_VX,TW_ZJ 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; Sun, 23 Oct 2011 13:05:48 +0000 From: "ubizjak at gmail dot com" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/50788] [4.7 Regression] ICE: in merge_overlapping_regs, at regrename.c:318 with -mavx -fpeel-loops -fstack-protector-all and __builtin_ia32_maskloadpd256 Date: Sun, 23 Oct 2011 13:06: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-Keywords: ice-on-valid-code X-Bugzilla-Severity: normal X-Bugzilla-Who: ubizjak at gmail dot com X-Bugzilla-Status: ASSIGNED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: ubizjak at gmail dot com X-Bugzilla-Target-Milestone: 4.7.0 X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 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-10/txt/msg02367.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50788 --- Comment #8 from Uros Bizjak 2011-10-23 13:05:43 UTC --- Looking a bit deeper into the problem - maskload pattern is simply wrong. There is no dependency on the previous value in the register, vmaskmov insn puts zero when value is not moved into the destination register. So, (define_insn "*avx_maskload" [(set (match_operand:VF 0 "register_operand" "=x") (unspec:VF [(match_operand: 1 "register_operand" "x") (match_operand:VF 2 "memory_operand" "m")] UNSPEC_MASKMOV))] "TARGET_AVX" "vmaskmov\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "sselog1") (set_attr "prefix_extra" "1") (set_attr "prefix" "vex") (set_attr "mode" "")])