From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11183 invoked by alias); 30 Oct 2018 09:59:11 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 11093 invoked by uid 89); 30 Oct 2018 09:59:10 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_PASS autolearn=ham version=3.3.2 spammy=1089, e_voidmode, E_VOIDmode, 2153 X-HELO: mx1.suse.de Received: from mx2.suse.de (HELO mx1.suse.de) (195.135.220.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 30 Oct 2018 09:59:08 +0000 Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 74E3BAD17; Tue, 30 Oct 2018 09:59:06 +0000 (UTC) Subject: hash-table violation in cselib.c From: =?UTF-8?Q?Martin_Li=c5=a1ka?= To: gcc-patches@gcc.gnu.org Cc: Nathan Sidwell , Jason Merrill , Jakub Jelinek , Paul Richard Thomas , Martin Jambor References: <23ffca95-6492-e609-aebb-bbdd83b5185d@suse.cz> Message-ID: Date: Tue, 30 Oct 2018 10:25:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.0 MIME-Version: 1.0 In-Reply-To: <23ffca95-6492-e609-aebb-bbdd83b5185d@suse.cz> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-IsSubscribed: yes X-SW-Source: 2018-10/txt/msg01884.txt.bz2 > 1) cselib_lookup_1: > > $ cat ice.c > a() { b(); } > > $ /dev/shm/objdir/gcc/xgcc -B/dev/shm/objdir/gcc/ ice.c -g -c -fchecking=3 -O > hash table checking failed: equal operator returns true for a pair of values with a different hash valueduring RTL pass: vartrack > ice.c:1:1: internal compiler error: in find_slot_with_hash, at hash-table.h:905 > 1 | a() { b(); } > | ^ > 0x9680b5 hash_table::find_slot_with_hash(cselib_hasher::key* const&, unsigned int, insert_option) > /home/marxin/Programming/gcc/gcc/hash-table.h:905 > 0x962518 cselib_find_slot > /home/marxin/Programming/gcc/gcc/cselib.c:584 > 0x9625d4 cselib_lookup_1 > /home/marxin/Programming/gcc/gcc/cselib.c:2097 > 0x9625d4 cselib_lookup(rtx_def*, machine_mode, int, machine_mode) > /home/marxin/Programming/gcc/gcc/cselib.c:2141 > 0x965ee7 cselib_record_sets > /home/marxin/Programming/gcc/gcc/cselib.c:2593 > 0x9670a9 cselib_process_insn(rtx_insn*) > /home/marxin/Programming/gcc/gcc/cselib.c:2790 > 0x1036b73 vt_initialize > /home/marxin/Programming/gcc/gcc/var-tracking.c:10231 > 0x103b98a variable_tracking_main_1 > /home/marxin/Programming/gcc/gcc/var-tracking.c:10460 > 0x103b98a variable_tracking_main() > /home/marxin/Programming/gcc/gcc/var-tracking.c:10513 > I did a small analysis and problematic back-trace is: $ (gdb) bt #0 new_cselib_val (hash=9, mode=E_SImode, x=0x7ffff6ad7be8) at /home/marxin/Programming/gcc/gcc/cselib.c:1323 #1 0x0000000000af86f0 in cselib_lookup_1 (x=0x7ffff6ad7be8, mode=E_SImode, create=1, memmode=E_VOIDmode) at /home/marxin/Programming/gcc/gcc/cselib.c:2046 #2 0x0000000000af8c5e in cselib_lookup (x=0x7ffff6ad7be8, mode=E_SImode, create=1, memmode=E_VOIDmode) at /home/marxin/Programming/gcc/gcc/cselib.c:2153 #3 0x0000000000af6119 in cselib_hash_rtx2 (x=0x7ffff6ad7be8, create=1, memmode=E_VOIDmode) at /home/marxin/Programming/gcc/gcc/cselib.c:1089 #4 0x0000000000af693d in cselib_hash_rtx2 (x=0x7ffff6ad7cc0, create=1, memmode=E_VOIDmode) at /home/marxin/Programming/gcc/gcc/cselib.c:1254 #5 0x0000000000af6ab4 in cselib_hash_rtx (x=0x7ffff6ad7cc0, create=1, memmode=E_VOIDmode) at /home/marxin/Programming/gcc/gcc/cselib.c:1309 #6 0x0000000000af8aef in cselib_lookup_1 (x=0x7ffff6ad7cc0, mode=E_CCZmode, create=1, memmode=E_VOIDmode) at /home/marxin/Programming/gcc/gcc/cselib.c:2104 #7 0x0000000000af8c5e in cselib_lookup (x=0x7ffff6ad7cc0, mode=E_CCZmode, create=1, memmode=E_VOIDmode) at /home/marxin/Programming/gcc/gcc/cselib.c:2153 #8 0x0000000000af9df4 in cselib_record_sets (insn=0x7ffff69a1480) at /home/marxin/Programming/gcc/gcc/cselib.c:2605 #9 0x0000000000afa946 in cselib_process_insn (insn=0x7ffff69a1480) at /home/marxin/Programming/gcc/gcc/cselib.c:2802 as seen hash ==9, which is: >│2046 e = new_cselib_val (next_uid, GET_MODE (x), x); it seems to me that there are combined real hash values (based on cselib_hash_rtx) and next_uid (which is incremented). Anyway, somebody familiar with the code needs to analyze that. Martin