From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24695 invoked by alias); 20 Dec 2010 09:29:55 -0000 Received: (qmail 24686 invoked by uid 22791); 20 Dec 2010 09:29:55 -0000 X-SWARE-Spam-Status: No, hits=-2.8 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00,TW_CF 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; Mon, 20 Dec 2010 09:29:50 +0000 From: "jakub at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug debug/47018] ICE: in pre_and_rev_post_order_compute, at cfganal.c:1047 with -fnon-call-exceptions -fvar-tracking -g X-Bugzilla-Reason: CC X-Bugzilla-Type: changed 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: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: CC 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 Date: Mon, 20 Dec 2010 09:29: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: 2010-12/txt/msg02342.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47018 Jakub Jelinek changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #1 from Jakub Jelinek 2010-12-20 09:29:41 UTC --- The problem is that split2 pass splits: (insn 6 3 7 2 (set (reg:DF 21 xmm0 [orig:59 D.2082 ] [59]) (float_extend:DF (reg/v:SF 21 xmm0 [orig:61 f ] [61]))) pr47018-2.C:11 136 {*extendsfdf2_sse} (expr_list:REG_EH_REGION (const_int 1 [0x1]) (nil))) into: (insn 36 3 37 2 (set (reg:V4SF 21 xmm0 [orig:61 f ] [61]) (vec_select:V4SF (vec_concat:V8SF (reg:V4SF 21 xmm0 [orig:61 f ] [61]) (reg:V4SF 21 xmm0 [orig:61 f ] [61])) (parallel [ (const_int 0 [0]) (const_int 4 [0x4]) (const_int 1 [0x1]) (const_int 5 [0x5]) ]))) pr47018-2.C:11 1472 {vec_interleave_lowv4sf} (nil)) (insn 37 36 7 2 (set (reg:V2DF 21 xmm0 [orig:59 D.2082 ] [59]) (float_extend:V2DF (vec_select:V2SF (reg:V4SF 21 xmm0 [orig:61 f ] [61]) (parallel [ (const_int 0 [0]) (const_int 1 [0x1]) ])))) pr47018-2.C:11 1462 {sse2_cvtps2pd} (nil)) and the split2 pass doesn't expect it needs to clean up the cfg and purge dead eh edges etc. With -O0 -fvar-tracking then var-tracking ICEs because there is an unreachable bb. With -fnon-call-exceptions float_extend in scalar float mode is considered as may_trap_p while vector float mode is not: default: /* Any floating arithmetic may trap. */ if (SCALAR_FLOAT_MODE_P (GET_MODE (x)) && flag_trapping_math) return 1; If the reason why float_extend:DF is considered as maybe trapping is sNaN, then doesn't vector mode float_extend trap too? Either split2 needs to purge dead eh edges and cleanup if needed, or the splitter is incorrect for -fnon-call-exceptions, or may_trap_p is wring in only handling scalar float modes and not vector float modes too.