r207439 - in /trunk/gcc: ChangeLog gimple-fold....

hubicka@gcc.gnu.org hubicka@gcc.gnu.org
Mon Feb 3 20:41:00 GMT 2014


Author: hubicka
Date: Mon Feb  3 20:41:30 2014
New Revision: 207439

URL: http://gcc.gnu.org/viewcvs?rev=207439&root=gcc&view=rev
Log:

	PR ipa/59831
	* g++.dg/ipa/devirt-24.C: New testcase.

	* ipa-cp.c (ipa_get_indirect_edge_target_1): Give up on -fno-devirtualize;
	Try to devirtualize by the knowledge of virtual table pointer given by
	aggregate propagation.
	* ipa-prop.c (try_make_edge_direct_virtual_call): Likewise.
	ipa_print_node_jump_functions): Dump also offset that
	is relevant for polymorphic calls.
	(determine_known_aggregate_parts): Add arg_type parameter; use it
	instead of determining the type from pointer type.
	(ipa_compute_jump_functions_for_edge): Update call of
	determine_known_aggregate_parts.
	* gimple-fold.c (gimple_get_virt_method_for_vtable): Break out from ...
	(gimple_get_virt_method_for_binfo): ... here; simplify using
	vtable_pointer_value_to_vtable.
	* gimple-fold.h (gimple_get_virt_method_for_vtable): Declare.
	* ipa-devirt.c (subbinfo_with_vtable_at_offset): Turn OFFSET parameter
	to unsigned HOST_WIDE_INT; Use vtable_pointer_value_to_vtable.
	(vtable_pointer_value_to_vtable): Break out from ...; handle also
	POINTER_PLUS_EXPR.
	(vtable_pointer_value_to_binfo): ... here.
	* ipa-utils.h (vtable_pointer_value_to_vtable): Declare.

Added:
    trunk/gcc/testsuite/g++.dg/ipa/devirt-24.C
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/gimple-fold.c
    trunk/gcc/gimple-fold.h
    trunk/gcc/ipa-cp.c
    trunk/gcc/ipa-devirt.c
    trunk/gcc/ipa-prop.c
    trunk/gcc/ipa-utils.h
    trunk/gcc/testsuite/ChangeLog



More information about the Gcc-cvs mailing list