https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69708
--- Comment #5 from Martin Jambor <jamborm at gcc dot gnu.org> --- Author: jamborm Date: Wed May 18 16:38:56 2016 New Revision: 236416 URL: https://gcc.gnu.org/viewcvs?rev=236416&root=gcc&view=rev Log: Indirect inlining of targets from references of global constants 2016-05-18 Martin Jambor <mjam...@suse.cz> PR ipa/69708 * cgraph.h (cgraph_indirect_call_info): New field guaranteed_unmodified. * ipa-cp.c (ipa_get_indirect_edge_target_1): Also pass parameter value to ipa_find_agg_cst_for_param, check guaranteed_unmodified when appropriate. * ipa-inline-analysis.c (evaluate_conditions_for_known_args): Also pass the parameter value to ipa_find_agg_cst_for_param. * ipa-prop.c (ipa_load_from_parm_agg): New parameter guaranteed_unmodified, store AA results there instead of bailing out if present. (ipa_note_param_call): Also initialize guaranteed_unmodified flag. (ipa_analyze_indirect_call_uses): Also set guaranteed_unmodified flag. (find_constructor_constant_at_offset): New function. (ipa_find_agg_cst_from_init): Likewise. (ipa_find_agg_cst_for_param): Also seearch for aggregate values in static initializers of contants, report back through a new paameter from_global_constant if that was the case. (try_make_edge_direct_simple_call): Also pass parameter value to ipa_find_agg_cst_for_param, check guaranteed_unmodified when appropriate. (ipa_write_indirect_edge_info): Stream new flag guaranteed_unmodified. (ipa_read_indirect_edge_info): Likewise. * ipa-prop.h (ipa_find_agg_cst_for_param): Update declaration. (ipa_load_from_parm_agg): Likewise. testsuite/ * gcc.dg/ipa/iinline-cstagg-1.c: New test. * gcc.dg/ipa/ipcp-cstagg-1.c: Likewise. * gcc.dg/ipa/ipcp-cstagg-2.c: Likewise. * gcc.dg/ipa/ipcp-cstagg-3.c: Likewise. * gcc.dg/ipa/ipcp-cstagg-4.c: Likewise. Added: trunk/gcc/testsuite/gcc.dg/ipa/iinline-cstagg-1.c trunk/gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-1.c trunk/gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-2.c trunk/gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-3.c trunk/gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-4.c Modified: trunk/gcc/ChangeLog trunk/gcc/cgraph.h trunk/gcc/ipa-cp.c trunk/gcc/ipa-inline-analysis.c trunk/gcc/ipa-prop.c trunk/gcc/ipa-prop.h trunk/gcc/testsuite/ChangeLog