blob: a59359d9f9361d3943e57013b524c1d97d8c4a1b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
2000-08-01 Bernd Schmidt <bernds@cygnus.co.uk>
* unroll.c (unroll_loop): Disable unrolling if there are any
jumps to the start label other than the last loop insn.
*** gcc/unroll.c 2000/05/26 00:12:51 1.128
--- gcc/unroll.c 2000/08/01 15:15:34
*************** unroll_loop (loop, insn_count, end_inser
*** 743,751 ****
else if (GET_CODE (insn) == JUMP_INSN)
{
if (JUMP_LABEL (insn))
! set_label_in_map (map,
! CODE_LABEL_NUMBER (JUMP_LABEL (insn)),
! JUMP_LABEL (insn));
else if (GET_CODE (PATTERN (insn)) == ADDR_VEC
|| GET_CODE (PATTERN (insn)) == ADDR_DIFF_VEC)
{
--- 743,760 ----
else if (GET_CODE (insn) == JUMP_INSN)
{
if (JUMP_LABEL (insn))
! {
! if (insn != last_loop_insn && JUMP_LABEL (insn) == start_label)
! {
! if (loop_dump_stream)
! fprintf (loop_dump_stream,
! "Unrolling failure: found branch to loop start\n");
! return;
! }
! set_label_in_map (map,
! CODE_LABEL_NUMBER (JUMP_LABEL (insn)),
! JUMP_LABEL (insn));
! }
else if (GET_CODE (PATTERN (insn)) == ADDR_VEC
|| GET_CODE (PATTERN (insn)) == ADDR_DIFF_VEC)
{
|