Prevent scheduler moving cc0 setter between blocks.
Nick Clifton
nickc@redhat.com
Tue Jul 29 16:56:00 GMT 2003
Hi Richard,
The v850 port is currently failing to build because of a bug in the
non-dfa scheduler: The code is allowing a cc0 setter instruction to
be pulled into an earlier block, breaking the cc0 setter/user
dependency and causing an internal failure when the code tries to
schedule the unaccompanied cc0 user instruction.
This patch, developed by Vlad, fixes the problem. May I apply it
please ?
Cheers
Nick
2003-07-28 Vladimir Makarov <vmakarov@redhat.com>
* sched-deps.c (sched_analyze_2): Prevent interblock move of CC0
setter.
Index: sched-deps.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/sched-deps.c,v
retrieving revision 1.59
diff -c -p -r1.59 sched-deps.c
*** sched-deps.c 6 Jul 2003 12:35:55 -0000 1.59
--- sched-deps.c 28 Jul 2003 18:35:25 -0000
*************** sched_analyze_2 (struct deps *deps, rtx
*** 625,630 ****
--- 625,633 ----
case CC0:
/* User of CC0 depends on immediately preceding insn. */
set_sched_group_p (insn);
+ /* Don't move CC0 setter to another block (it can set up the
+ same flag for previous CC0 users which is safe). */
+ CANT_MOVE (prev_nonnote_insn (insn)) = 1;
return;
#endif
More information about the Gcc-patches
mailing list