[middle-end, patch 2/8] Overhaul of modification analysis

Jan Hubicka jh@suse.cz
Mon Jul 21 17:20:00 GMT 2008


> 
> I  don't  know why  they  were  there but  I  also  did  not have  any
> compelling reason  to try removing  them.  Anyway, I just  did exactly
> that and am testing the new patch.  We will see if anything breakes.

OK, the check should be safe to remove then.
One other explanation I can think of is that we are not able to clone
all uninlinable functions. This should be however checked elsewhere, we
can still analyze and propagate through. (and it is not safe to
assume that inlinability was tested previously and thus
DECL_UNINLINABLE initialized).

It would be nice to break out the inlinability checks that apply to
clonning too into separate predicate.  For instance functions with local
labels having their addresses taken and escaping or setjmp can't be
clonned. But this is something could do later ;)
> 
> Here is the updated version:
> 
> 2008-07-21  Martin Jambor  <mjambor@suse.cz>
> 
>         * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed
> 	rather than for DECL_SAVED_TREE.
> 	* ipa-prop.c: Include diagnostic.h.
>         (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs
> 	thoroughly.
> 	(ipa_detect_param_modifications): Function rewritten from scratch.
> 	(ipa_compute_jump_functions): Changed accesses to modification flags.
> 	(ipa_free_node_params_substructures): Update flags destruction.
> 	(ipa_node_duplication_hook): Update flags duplication.
> 	(ipa_print_all_params_modified): Updated flag access.
> 	* ipa-prop.h (struct ipa_param_flags): New structure.
>         (struct ipa_node_params): New field modification_analysis_done,
>         modified_flags changed into param_flags.
>         (ipa_is_ith_param_modified): Changed to use new flags.
> 	* Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies.

Yes, this is OK.
Thanks!
Honza



More information about the Gcc-patches mailing list