This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: ipa-branch merge: Enable IPA-SSA
- From: Roger Sayle <roger at eyesopen dot com>
- To: Jan Hubicka <jh at suse dot cz>
- Cc: gcc-patches at gcc dot gnu dot org, <dnovillo at redhat dot com>
- Date: Tue, 2 Jan 2007 14:03:56 -0700 (MST)
- Subject: Re: ipa-branch merge: Enable IPA-SSA
Hi Jan,
On Mon, 1 Jan 2007, Jan Hubicka wrote:
>
> * cgraph.c: Include tree-flow.h
> (cgraph_add_new-function): Handle IPA_SSA mode; execute early_local_passes.
> * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
> * tree-pass.h (pass_all_early_optimizations): Declare.
> * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
> early_local_passes.
> (cgraph_analyze_function): Do early_local_passes.
> * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
> Do not add referenced vars.
> * tree-optimize.c (gate_all_optimizations): Do not execute when not in
> SSA form.
> (gate_all_early_local_passes): New gate.
> (pass_early_local_passes): Use new gate.
> (execute_early_local_optimizations): New functions.
> (gate_all_early_optimizations): New gate.
> (pass_all_early_optimizations): New pass.
> (execute_free_datastructures): Free SSA only when initialized.
> (gate_init_datastructures): Init only when optimizing.
> (tree_lowering_passes): Do early local passes when called late.
> * tree-profile.c (do_tree_profiling): Don't profile functions added late.
> (do_early_tree_profiling, pass_early_tree_profile): Kill.
> * tree-cfg.c (update_modified_stmts): Do not update when operands are not active.
> * passes.c (init_optimizations_passes): Reorder so we go into SSA during early_local_passes.
> * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
>
> * pr16194.c: We now output error on all three functions, not just first one.
This is OK for mainline, though the last line of the ChangeLog entry needs
to read "* gcc.dg/pr16194.c". I believe that the gate_all_optimizations
change is safe (once in SSA form, we shouldn't introduce error_mark_nodes
or other fatal changes, even if we set errorcount or sorrycount).
If you haven't already, please try and fix the g++.dg/opt/devirt1.C and
gcc.dg/ipa fallout as quickly as possible. These don't look like blockers
for the merge, and folks will know who to blame for regressions with "ipa"
in the test name.
As always, if Diego has any comments once he returns from vacation,
they'll need to be addressed. However, this all looks "boilerplate",
even though its invasive, and potentially destabilizing. I suspect
that it's only latent bugs and tree-ssa pass ordering that might need
to be argued over.
Many thanks again.
Roger
--