https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63166

--- Comment #3 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
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...

Reply via email to