Here are five patches that together allow combine to do more useful
work with PARALLELs of two SETs, like on many machines a set of a GPR
and one of the condition code, or a GPR and the carry bit on PowerPC,
or two GPRs on some machines.

The first patch is just for debug.

The second is the real meat: it allows combining an I2 that has two SETs.

The third adds a regno field to LOG_LINKS, which the fourth then uses in
distribute_log_links; without that, most parallels lose their log_links
early.

The fifth removes a SET from the combination result if it is (now) dead,
if what's left is a valid instruction.

Bootstrapped and tested on powerpc64-linux (tree of a week ago), all five
together, -m64,-m32,-m32/-mpowerpc64,-m64/-mlra; no regressions.  Checks
of the separate patches still running.  Is this okay for mainline if it
passes?


Segher


Segher Boessenkool (5):
  combine: more verbose costs output
  combine: handle I2 a parallel of two SETs
  combine: add regno field to LOG_LINKS
  combine: distribute_log_links for PARALLELs of SETs
  combine: preferably delete dead SETs in PARALLELs

 gcc/combine.c | 313 +++++++++++++++++++++++++++++++++++-----------------------
 1 file changed, 191 insertions(+), 122 deletions(-)

-- 
1.8.1.4

Reply via email to