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]
Other format: [Raw text]

Re: PATCH COMMITTED: Use conditional moves in groups of assignments


Joern RENNECKE <joern.rennecke@st.com> writes:

> > RTL if-conversion currently only operates on single instructions.
> > That is, the then block and the optional else block must only contain
> > a single instruction.  Extending them to support multiple instructions
> > is fairly complex in the general case.
> 
> Not with all the infrastructure we already have in struct-equiv.c .
> Generally constant inputs should be fairly straightforward, I only haven't
> added that because there seemed no need to do that (and I rather have a
> test case before I start coding).
> 
> Please look at the ifcvt.c patches for PR 20070.

Thanks.  I just want to note that, as far as I can see, while this
work is obviously useful and important, it is not the same as the case
I was addressing.

My patch handles code which is different in the then/else branches, as
long as everything is an assignment to a pseudo-register.  In
particular, the then/else branches can set different registers.  I
initially only handled the case of constant or register inputs, but
it's relatively straightforward to extend to general operands, which
need not be the same in the then/else branches, with more careful
checking of which code affects which other code.

Ian


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