On 07/12/2011 06:07 PM, David Malcolm wrote:
On this build of GCC (standard Fedora 15 gcc package of 4.6.0), the relevant part of cfgexpand.c looks like this:struct rtl_opt_pass pass_expand = { { RTL_PASS, "expand", /* name */ [...snip...] PROP_ssa | PROP_gimple_leh | PROP_cfg | PROP_gimple_lcx, /* properties_required */ PROP_rtl, /* properties_provided */ PROP_ssa | PROP_trees, /* properties_destroyed */ [...snip...] } and gcc/tree-pass.h has: #define PROP_trees \ (PROP_gimple_any | PROP_gimple_lcf | PROP_gimple_leh | PROP_gimple_lomp) and that matches up with both the diagram, and the entry for "expand" in the table below [1]. So it seems that the diagram is correctly accessing the "properties_destroyed" data for the "expand" pass; does PROP_gimple_lcx need to be added somewhere? (or should the diagram we taught to specialcase some things, perhaps?)
Yes, PROP_gimple_lcx needs to be added to PROP_trees. I cannot approve the patch, unfortunately.
Also, several passes are likely lacking PROP_crited in their properties_destroyed. At least all those that can be followed by TODO_cleanup_cfg:
* pass_split_functions * pass_call_cdcen * pass_build_cfg * pass_cleanup_eh * pass_if_conversion * pass_ipa_inline * pass_early_inline * pass_fixup_cfg * pass_cse_sincos * pass_predcom * pass_lim * pass_loop_prefetch * pass_vectorize * pass_iv_canon * pass_tree_unswitch * pass_vrp * pass_sra_early * pass_sra * pass_early_ipa_sra * pass_ccp * pass_fold_builtins * pass_copy_prop * pass_dce * pass_dce_loop * pass_cd_dce * pass_dominator * pass_phi_only_cprop * pass_forwprop * pass_tree_ifcombine * pass_scev_cprop * pass_parallelize_loops * pass_ch * pass_cselim * pass_pre * pass_fre * pass_tail_recursion * pass_tail_calls Paolo
