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] | |
I am sorry, I forgot to attach patches themselves to my letter. So
they are here with original letter and changelogs.
Hi! These are two patches for sel-sched branch.
First patch makes scheduler create bookkeeping instructions at the end
of existing basic block if it can do so, instead of always creating
new basic block for bookkeeping instructions. This solves a problem
with label alignment: alignment is stored in association with label
and is computed before scheduler pass; when pipelining, splitting of
basic block moves old block (with its label) for bookkeeping out of
loop, so making label (loop) alignment in wrong place. This patch
prevents such behaviour.
Also, first patch resolves bug with pipelining, when
find_best_rhs_and_reg_that_fits is going to choose from av set,
containing only one instruction, it will decrement ready.n_ready to
zero, so sched_reorder hook has no choice, but to say that nothing can
be scheduled on this cycle.
Second patch contains some cleanups for first patch. Also it contains
changes for generation of bookkeeping instructions: allowing of
generation of bookkeeping instructions at scheduling boundary, but
generating new basic block for them when scheduling something at this
boundary. Also it contains minor bugfixes concerning debug output.
The main purpose of second patch is allowing rescheduling of pipelined
code without pipelinig. This resolves a performance bug, when
pipelining instructions from the beginning of loop: pipelining of some
instructions from the beginnig of loop removes them from their source
places and leaves all other instructions from beginning of loop at
their old places; this way, "bubbles" from removed instructions could
be created, increasing execution time of loop.
Also, the second patch contains a fix to sched-deps.c, which replaces
generation of true dependencies with generation of anti dependencies
for jumps, followed by barrier.
Both patches committed by Andrey Belevantsev to sel-sched branch.
2007-03-29 Dmitry Zhurikhin <zhur@ispras.ru>
* sel-sched.c (generate_bookkeeping_insn): Implement creating of
bookkeeping insn in existing block if possible instead of always
creating a new basic block for bookkeeping insn.
(find_best_rhs_and_reg_that_fits): Correct bug with always not
scheduling issue_rate-th instruction on current cycle when
pipelining is on.
(fill_insns): Move BND_TO some instructions back if bookkeeping
insn was inserted between last scheduled insn and BND_TO.
2007-03-29 Dmitry Zhurikhin <zhur@ispras.ru>
* sel-sched.c (generate_bookkeeping_insn): Remove unneeded
conditions when checking if bookkeeping insn can be generated in
existing block and fix coding.
(init_seqno_1): Remove assert.
(fill_insns): Remove unneeded moving of boundary. In rare case of
generating bookkeeping insn at the block above floating bb header
split this (upper) block after place_to_insert generating new
floating bb header that way.
(sel_sched_region_1): Implement rescheduling of pipelined code.
* sel-sched-ir.c (sel_split_block): Added second parameter meaning
instruction, after which basic block should be splitted.
* sel-sched-ir.h: Correct declaration.
* sel-sched-dump.c (sel_print_insn): Check if INSN_VI is present
before referencing VINSN_SCHED_TIMES.
* common.opt (flag_sel_sched_reschedule_pipelined): New flag to
reschedule pipelined code without pipelining after scheduling
region.
* sched-deps.c (sched_analyze_insn): Replace TRUE_BARRIER with
MOVE_BARRIER to generate anti instead of true dependencies for
JUMP followed with a BARRIER.
Attachment:
patch-29-03-07-2.diff
Description: Binary data
Attachment:
patch-29-03-07-1.diff
Description: Binary data
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |