This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Simple commit_edge_insertions fix


> On Sun, May 14, 2000 at 03:16:48PM -0600, Jeffrey A Law wrote:
> > We also have ports that use a move and unconditional branch type
> > instruction (the PA via movb,tr src,target,label
> 
> Sounds like we should change the test:
> 
>       /* It is possible to have a non-simple jump here.  Consider a target
>          where some forms of unconditional jumps clobber a register.  This
>          happens on the fr30 for example. 
> 
>          We know this block has a single successor, so we can just emit
>          the queued insns before the jump.  */
>       if (GET_CODE (bb->end) == JUMP_INSN)
> 
> to look for single_set?  Clearly we're safe for gcse, as your

Perhaps there can be problems even with instruction having all sets but PC
unused.  But you will need pass modifing non-local life information to
trigger such problem, so maybe this is not important case.

> sort of nonsense hasn't been created by then, but as we use 
> commit_edge_insertions in more places...

I think we can consider adding adding EDGE_CAN_COMMIT flag.
Number of abnormal edges (those that are the only predecesor of the block etc)
are commitable too.  Some passes (such as regstack) may benefit from this,
since global will not be forced to spill all crossing pseudos to the stack..

Just an idea...

Honza
>  
> 
> r~
> 
> 
> PS: Is it just me or are there hordes of duplicate patterns
> in the pa md file?

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]