[Bug middle-end/52939] [4.7/4.8 Regression] ice in gimple_get_virt_method_for_binfo with -O3

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Apr 13 09:59:00 GMT 2012


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52939

--- Comment #4 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-04-13 09:58:44 UTC ---
(In reply to comment #3)
> Created attachment 27143 [details]
> Simple testcase
> 
> This should be a simpler testcase.  What happens is that we are
> attempting to devirtualize call to a virtual method introduced in a
> descendant but with an ancestor which does not have it.  I suppose
> this is OK if the call is never executed in run-time.
> 
> Dealing with this situation in gimple_get_virt_method_for_binfo would
> be easy, but perhaps we want fold_ctor_reference to return NULL is it
> is requested to fold an expression from beyond the provided
> constructor?

Well, if we know what the size of the constructor target is, yes.  Otherwise
all non-initialized parts are implicitely initialized to zero.

Thus, you need to handle this case in gimple_get_virt_method_for_binfo
anyway (fails are always better than asserts ...)



More information about the Gcc-bugs mailing list