[Bug ipa/60659] [4.9 Regression] ICE in get_polymorphic_call_info, at ipa-devirt.c:1292
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60659 Markus Trippelsdorf trippels at gcc dot gnu.org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #7 from Markus Trippelsdorf trippels at gcc dot gnu.org --- Fixed.
[Bug ipa/60659] [4.9 Regression] ICE in get_polymorphic_call_info, at ipa-devirt.c:1292
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60659 --- Comment #6 from Jan Hubicka hubicka at gcc dot gnu.org --- Author: hubicka Date: Thu Apr 3 03:55:59 2014 New Revision: 209048 URL: http://gcc.gnu.org/viewcvs?rev=209048root=gccview=rev Log: PR ipa/60659 * ipa-devirt.c (get_polymorphic_call_info): Do not ICE on type inconsistent code and instead mark the context inconsistent. (possible_polymorphic_call_targets): For inconsistent contexts return empty complete list. * testsuite/g++.dg/torture/pr60659.C: New testcase. Added: trunk/gcc/testsuite/g++.dg/torture/pr60659.C Modified: trunk/gcc/ChangeLog trunk/gcc/ipa-devirt.c trunk/gcc/testsuite/ChangeLog
[Bug ipa/60659] [4.9 Regression] ICE in get_polymorphic_call_info, at ipa-devirt.c:1292
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60659 Richard Biener rguenth at gcc dot gnu.org changed: What|Removed |Added Priority|P3 |P1
[Bug ipa/60659] [4.9 Regression] ICE in get_polymorphic_call_info, at ipa-devirt.c:1292
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60659 --- Comment #5 from Jan Hubicka hubicka at gcc dot gnu.org --- Created attachment 32494 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32494action=edit Patch I am testing This is patch that makes us to redirect those type inconsistent calls to builtin_unreachable. It seems to match surprisingly often on firefox, so I will try to also test libreoffice's unit tests before comiting.
[Bug ipa/60659] [4.9 Regression] ICE in get_polymorphic_call_info, at ipa-devirt.c:1292
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60659 --- Comment #4 from Jan Hubicka hubicka at gcc dot gnu.org --- OK, this is ICE on type inconsistent program (it looks up virtual function in non-virtual type). I forgot gcc_unreacable on that code path from earlier sanity checking. I will arrange such inconsistent calls to be builtin_unreachable.
[Bug ipa/60659] [4.9 Regression] ICE in get_polymorphic_call_info, at ipa-devirt.c:1292
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60659 Richard Biener rguenth at gcc dot gnu.org changed: What|Removed |Added Target Milestone|--- |4.9.0
[Bug ipa/60659] [4.9 Regression] ICE in get_polymorphic_call_info, at ipa-devirt.c:1292
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60659 Jakub Jelinek jakub at gcc dot gnu.org changed: What|Removed |Added CC||jakub at gcc dot gnu.org --- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org --- Started with r205019.
[Bug ipa/60659] [4.9 Regression] ICE in get_polymorphic_call_info, at ipa-devirt.c:1292
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60659 Markus Trippelsdorf trippels at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2014-03-25 CC||hubicka at gcc dot gnu.org, ||trippels at gcc dot gnu.org Component|target |ipa Ever confirmed|0 |1 --- Comment #1 from Markus Trippelsdorf trippels at gcc dot gnu.org --- Also happens on x86_64. markus@x4 tmp % cat test.ii template typename _InputIterator void __distance (_InputIterator); template typename _InputIterator void distance (_InputIterator, _InputIterator p2) { __distance (p2); } namespace boost { template class Iterator struct A { typedef typename Iterator::difference_type type; }; template class T typename T::const_iterator end (T ); template class T typename T::const_iterator begin (T ); template class T struct D : Atypename T::const_iterator { }; template class T typename DT::type distance (const T p1) { distance (boost::begin (p1), boost::end (p1)); return 0; } template class IteratorT class B { public: typedef B type; typedef IteratorT const_iterator; }; } typedef int storage_t[]; struct F; template template typename class struct G { G (const G p1) { p1.m_fn1 ().m_fn1 (0); } const F m_fn1 () const { const void *a; a = data_m; return *static_castconst F *(a); } storage_t *data_m; }; struct F { virtual F *m_fn1 (void *) const; }; template typename struct H; struct C : GH { typedef int difference_type; }; boost::BC AllTransVideos (); int b = boost::distance (AllTransVideos ()); markus@x4 tmp % g++ -c -O2 test.ii test.ii: In function ‘void distance(_InputIterator, _InputIterator) [with _InputIterator = C]’: test.ii:5:17: internal compiler error: in get_polymorphic_call_info, at ipa-devirt.c:1292 __distance (p2); ^ Please submit a full bug report,
[Bug ipa/60659] [4.9 Regression] ICE in get_polymorphic_call_info, at ipa-devirt.c:1292
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60659 Jan Hubicka hubicka at gcc dot gnu.org changed: What|Removed |Added Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |hubicka at gcc dot gnu.org --- Comment #2 from Jan Hubicka hubicka at gcc dot gnu.org --- Mine. And I was about to declare ipa-devirt to be officially 100% bug free :)