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: Splitting call_insns


On Nov 24, 2000, Joern Rennecke <amylaar@redhat.com> wrote:

>> * emit-rtl.c (try_split): Propagate CALL_INSN_FUNCTION_USAGE
>> to CALL_INSNs in the split sequence.

> I'm not quite sure this will always do the right thing.  Is the
> CALL_INSN_FUNCTION_USAGE of the split input insn always right for the
> split output insn?  Will there always be just one input and one output
> call?

These are the assumptions of the change.  These assumptions already
had to hold in case the split doesn't output a sequence, so I thought
it would work in case of a sequence too.  It might be pushing too
hard, but since it just didn't work before, I don't think it would
hurt too much to let it work in some cases.

Initially, I had thought of only overwriting CALL_INSN_FUNCTION_USAGE
in case the split hadn't set it, but I ended up deciding to leave it
to whoever decides to extend it next.  Ideally, we'd need access to
the original insn to be able to propagate and adjust information in
more general cases, and I didn't feel like making such a change :-)

> What happens if two calls and one reg-reg insn get combined and splitted
> into two call insns?

This isn't currently handled, and it doesn't have to.  

> Or can you proove that it can't happen?

I can prove there were no previously-working splits that generated
more than one call insns.

-- 
Alexandre Oliva   Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/
Red Hat GCC Developer                  aoliva@{cygnus.com, redhat.com}
CS PhD student at IC-Unicamp        oliva@{lsd.ic.unicamp.br, gnu.org}
Free Software Evangelist    *Please* write to mailing lists, not to me

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