Hi Jan, > this patch makes ipa_polymorphic_call_context::get_dynamic_type to > track if vptr has changed in between function entry and polymorphic > call. > > The patch also add logic skipping if (a==0) checks in multiple > inheritance so I can construct testcase more easily. > > I got my SVN tree into an inconsistent state yesterday by stopping in > middle of commit. The patch went in in two parts, so i am attaching > both changes. Quite few of devirt-4*.C was broken overnight, I apologize > for that.
as of yesterday (r215969), many of the devirt-4*.C tests come up UNRESOLVED on both Solaris/x86 and Solaris/SPARC: UNRESOLVED: g++.dg/ipa/devirt-42.C -std=gnu++11 scan-ipa-dump-not optimized "OBJ_TYPE_REF" UNRESOLVED: g++.dg/ipa/devirt-42.C -std=gnu++11 scan-ipa-dump-times optimized "return 2" 2 UNRESOLVED: g++.dg/ipa/devirt-42.C -std=gnu++1y scan-ipa-dump-not optimized "OBJ_TYPE_REF" UNRESOLVED: g++.dg/ipa/devirt-42.C -std=gnu++1y scan-ipa-dump-times optimized "return 2" 2 UNRESOLVED: g++.dg/ipa/devirt-42.C -std=gnu++98 scan-ipa-dump-not optimized "OBJ_TYPE_REF" UNRESOLVED: g++.dg/ipa/devirt-42.C -std=gnu++98 scan-ipa-dump-times optimized "return 2" 2 UNRESOLVED: g++.dg/ipa/devirt-46.C -std=gnu++11 scan-ipa-dump-not optimized "OBJ_TYPE_REF" UNRESOLVED: g++.dg/ipa/devirt-46.C -std=gnu++11 scan-ipa-dump-not optimized "abort" UNRESOLVED: g++.dg/ipa/devirt-46.C -std=gnu++1y scan-ipa-dump-not optimized "OBJ_TYPE_REF" UNRESOLVED: g++.dg/ipa/devirt-46.C -std=gnu++1y scan-ipa-dump-not optimized "abort" UNRESOLVED: g++.dg/ipa/devirt-46.C -std=gnu++98 scan-ipa-dump-not optimized "OBJ_TYPE_REF" UNRESOLVED: g++.dg/ipa/devirt-46.C -std=gnu++98 scan-ipa-dump-not optimized "abort" UNRESOLVED: g++.dg/ipa/devirt-47.C -std=gnu++11 scan-ipa-dump optimized "C::_ZThn" UNRESOLVED: g++.dg/ipa/devirt-47.C -std=gnu++11 scan-ipa-dump-not optimized "OBJ_TYPE_REF" UNRESOLVED: g++.dg/ipa/devirt-47.C -std=gnu++1y scan-ipa-dump optimized "C::_ZThn" UNRESOLVED: g++.dg/ipa/devirt-47.C -std=gnu++1y scan-ipa-dump-not optimized "OBJ_TYPE_REF" UNRESOLVED: g++.dg/ipa/devirt-47.C -std=gnu++98 scan-ipa-dump optimized "C::_ZThn" UNRESOLVED: g++.dg/ipa/devirt-47.C -std=gnu++98 scan-ipa-dump-not optimized "OBJ_TYPE_REF" both 32 and 64-bit. In all cases, g++.log shows g++.dg/ipa/devirt-42.C -std=gnu++98 : dump file does not exist UNRESOLVED: g++.dg/ipa/devirt-42.C -std=gnu++98 scan-ipa-dump-times optimized "return 2" 2 g++.dg/ipa/devirt-42.C -std=gnu++98 : dump file does not exist UNRESOLVED: g++.dg/ipa/devirt-42.C -std=gnu++98 scan-ipa-dump-not optimized "OBJ_TYPE_REF" Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University