Hello,
On 14.03.2016 19:45, Bernd Schmidt wrote:
On 03/14/2016 05:23 PM, Alexander Monakov wrote:
On Mon, 14 Mar 2016, Andrey Belevantsev wrote:
In this case, we get an inconsistency between the sched-deps interface,
saying
we can't move an insn writing the si register through a vector insn, and
the
liveness analysis, saying we can. The latter doesn't take into account
implicit_reg_pending_clobbers set calculated in sched-deps before register
allocation. The solution is to reflect this set in our insn data
(sets/uses/clobbers).
Ok for trunk?
One nit; the prototype of the new function:
extern void get_implicit_reg_pending_clobbers (rtx_insn *, HARD_REG_SET *);
has source operand on the left, destination on the right; it's probably
nicer
to swap them around.
OK as far as selective scheduler changes go, but this also needs a general
scheduler maintainer ack for the sched-deps.c change. Vladimir, can you
have
a look?
Needs better documentation of the new function's arguments (as per general
requirements for such things), but otherwise that part is ok (either arg
order). The sel-sched parts should also have proper function comments
however, and here:
+ {
+ SET_REGNO_REG_SET (IDATA_REG_SETS (id), regno);
+ }
we don't use braces around single statements.
I've incorporated both yours and Alexander's comments and committed the
patch as rev. 234216.
Andrey
Bernd