From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22292 invoked by alias); 9 Sep 2014 01:38:18 -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 22220 invoked by uid 48); 9 Sep 2014 01:38:05 -0000 From: "hubicka at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug lto/63166] [5 Regression] ICE (LTO): ipa_intraprocedural_devirtualization, at ipa-prop.c:2611 Date: Tue, 09 Sep 2014 01:38:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: lto X-Bugzilla-Version: 5.0 X-Bugzilla-Keywords: ice-on-valid-code X-Bugzilla-Severity: normal X-Bugzilla-Who: hubicka at gcc dot gnu.org X-Bugzilla-Status: ASSIGNED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: hubicka at gcc dot gnu.org X-Bugzilla-Target-Milestone: 5.0 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: 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-09/txt/msg01291.txt.bz2 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63166 --- Comment #3 from Jan Hubicka --- Here I get: Determining dynamic type for call: OBJ_TYPE_REF(_76;(struct Foobar_Out)&Foobar_LOG.D.2901->0) (&Foobar_LOG.D.2901, " ", 1); Starting walk at: _69 = MEM[(struct Foobar_Out *)&Foobar_LOG]._vptr.Foobar_Out; instance pointer: &Foobar_LOG.D.2901 Outer instance pointer: Foobar_LOG offset: 0 (bits) vtbl reference: MEM[(struct Foobar_Out *)&Foobar_LOG]._vptr.Foobar_Out Function call may change dynamic type:_35 = getName (_50(D), _33); Function call may change dynamic type:_33 = operator* (&caller_it); Function call may change dynamic type:_31 = atEnd (&caller_it); Function call may change dynamic type:getCallerIterator (_26); Function call may change dynamic type:_26 = OBJ_TYPE_REF(_24;(const struct ECell)_44->0) (_44); Function call may change dynamic type:D.2965 = OBJ_TYPE_REF(_21;(struct ECellList)_19->1) (_19, &D.2966); Function call may change dynamic type:_19 = getCellList (_49(D)); Function call may change dynamic type:p_cl_it_14 = OBJ_TYPE_REF(_12;(const struct ECellList)_9->0) (_9); Function call may change dynamic type:_9 = getCellList (_43(D)); Function call may change dynamic type:operator delete (p_cl_it_14); Checking vtbl store: MEM[(struct HashMapIterator *)p_cl_it_14]._vptr.HashMapIterator = &MEM[(void *)&_ZTV15HashMapIteratorI6EIdentP5ECell15DBHashFunctionsE + 16B]; base:MEM[(struct HashMapIterator *)p_cl_it_14] does not match instance:Foobar_LOG Unanalyzed store may change type. Function call may change dynamic type:OBJ_TYPE_REF(_16;(struct CellListIterator)p_cl_it_14->1) (p_cl_it_14); Function call may change dynamic type:_31 = atEnd (&caller_it); Function call may change dynamic type:OBJ_TYPE_REF(_76;(struct Foobar_Out)&Foobar_LOG.D.2901->0) (&Foobar_LOG.D.2901, " ", 1); Function call may change dynamic type:_35 = getName (_50(D), _33); Function call may change dynamic type:_33 = operator* (&caller_it); Targets of polymorphic call of type 0:struct Foobar_Out token 0 Contained in type:struct Foobar_Log at offset 0 This is a complete list. (base types included) Foobar_Log::put_to_buf/109 (no definition) Targets that are not likely: Foobar_Out::put_to_buf/108 (no definition) I seem to agree that the memory store may potentially be vtable store for the object in question. I need to check how the old code gets around it...