Re: [patch] Preserve the CFG until after final

2013-05-23 Thread Eric Botcazou
> Sadly no. Most of these (the *agu* ones) are also reached from final. > For example: > > movdi_internal -> ix86_use_lea_for_mov -> ix86_lea_outperforms -> > distance_non_agu_define -> distance_non_agu_define_in_bb > > Likewise for movsi_internal, and zero_extendsidi2. For the > mov?i_internal d

Re: [patch] Preserve the CFG until after final

2013-05-22 Thread Richard Henderson
On 05/19/2013 08:59 AM, Steven Bosscher wrote: > Some ports have > CFG-aware machine-reorg passes but verify_flow_info fails after the > machine-reorg pass because the port emits insns between basic blocks, > e.g. for const pools. What's missing is a way for verify_flow_info to > be tolerant of suc

Re: [patch] Preserve the CFG until after final

2013-05-22 Thread Jeff Law
On 05/22/2013 03:17 PM, Steven Bosscher wrote: Ah, the crazy stuff one can do after machine reorg. It's the Wild West of GCC :-) I still look at that hook as the contribution I most wish I'd never made. The abuses are, umm, amazing. jeff

Re: [patch] Preserve the CFG until after final

2013-05-22 Thread Steven Bosscher
On Wed, May 22, 2013 at 10:21 AM, Eric Botcazou wrote: >> That is only partially true. Currently the transition is already de >> facto going on: Just look at how many back ends use >> compute_bb_for_insn to re-initialize the BLOCK_FOR_INSN pointers right >> after pass_free_cfg (it's usually the fir

Re: [patch] Preserve the CFG until after final

2013-05-22 Thread Eric Botcazou
> That is only partially true. Currently the transition is already de > facto going on: Just look at how many back ends use > compute_bb_for_insn to re-initialize the BLOCK_FOR_INSN pointers right > after pass_free_cfg (it's usually the first thing they do in the > machine-reorg pass). Yes, and we

Re: [patch] Preserve the CFG until after final

2013-05-21 Thread Steven Bosscher
On Tue, May 21, 2013 at 10:57 AM, Eric Botcazou wrote: >> This patch allows targets to keep the CFG around until after final, by >> skipping pass_free_cfg and CFG-destructive passes like dbr_schedule, >> and by making insn splitting before 'final' use split_all_insns >> instead of split_all_insns_n

Re: [patch] Preserve the CFG until after final

2013-05-21 Thread Eric Botcazou
> This patch allows targets to keep the CFG around until after final, by > skipping pass_free_cfg and CFG-destructive passes like dbr_schedule, > and by making insn splitting before 'final' use split_all_insns > instead of split_all_insns_noflow if pass_free_cfg was skipped. Well, you currently ca

[patch] Preserve the CFG until after final

2013-05-19 Thread Steven Bosscher
Hello, This patch allows targets to keep the CFG around until after final, by skipping pass_free_cfg and CFG-destructive passes like dbr_schedule, and by making insn splitting before 'final' use split_all_insns instead of split_all_insns_noflow if pass_free_cfg was skipped. Most machine reorg pas