Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
326f06f7
Commit
326f06f7
authored
May 13, 1993
by
Richard Kenner
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(reorg_redirect_jump): New function.
Call it in most places instead of redirect_jump. From-SVN: r4443
parent
6d5363fa
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
29 additions
and
12 deletions
+29
-12
gcc/reorg.c
+29
-12
No files found.
gcc/reorg.c
View file @
326f06f7
...
...
@@ -248,6 +248,7 @@ static int redundant_insn_p PROTO((rtx, rtx, rtx));
static
int
own_thread_p
PROTO
((
rtx
,
rtx
,
int
));
static
int
find_basic_block
PROTO
((
rtx
));
static
void
update_block
PROTO
((
rtx
,
rtx
));
static
int
reorg_redirect_jump
PROTO
((
rtx
,
rtx
));
static
void
update_reg_dead_notes
PROTO
((
rtx
,
rtx
));
static
void
update_live_status
PROTO
((
rtx
,
rtx
));
static
rtx
next_insn_no_annul
PROTO
((
rtx
));
...
...
@@ -1121,7 +1122,7 @@ optimize_skip (insn)
target_label
=
JUMP_LABEL
(
next_trial
);
if
(
target_label
==
0
)
target_label
=
find_end_label
();
redirect_jump
(
insn
,
target_label
);
re
org_re
direct_jump
(
insn
,
target_label
);
}
INSN_ANNULLED_BRANCH_P
(
insn
)
=
1
;
...
...
@@ -2077,6 +2078,22 @@ update_block (insn, where)
bb_ticks
[
b
]
++
;
}
/* Similar to REDIRECT_JUMP except that we update the BB_TICKS entry for
the basic block containing the jump. */
static
int
reorg_redirect_jump
(
jump
,
nlabel
)
rtx
jump
;
rtx
nlabel
;
{
int
b
=
find_basic_block
(
jump
);
if
(
b
!=
-
1
)
bb_ticks
[
b
]
++
;
return
redirect_jump
(
jump
,
nlabel
);
}
/* Called when INSN is being moved forward into a delay slot of DELAYED_INSN.
We check every instruction between INSN and DELAYED_INSN for REG_DEAD notes
that reference values used in INSN. If we find one, then we move the
...
...
@@ -2908,12 +2925,12 @@ fill_simple_delay_slots (first, non_jumps_p)
delay_list
=
add_to_delay_list
(
copy_rtx
(
next_trial
),
delay_list
);
slots_filled
++
;
redirect_jump
(
trial
,
new_label
);
re
org_re
direct_jump
(
trial
,
new_label
);
/* If we merged because we both jumped to the same place,
redirect the original insn also. */
if
(
target
)
redirect_jump
(
insn
,
new_label
);
re
org_re
direct_jump
(
insn
,
new_label
);
}
}
...
...
@@ -3347,7 +3364,7 @@ fill_slots_from_thread (insn, condition, thread, opposite_thread, likely,
else
label
=
get_label_before
(
new_thread
);
redirect_jump
(
insn
,
label
);
re
org_re
direct_jump
(
insn
,
label
);
}
return
delay_list
;
...
...
@@ -3513,7 +3530,7 @@ relax_delay_slots (first)
}
if
(
target_label
!=
JUMP_LABEL
(
insn
))
redirect_jump
(
insn
,
target_label
);
re
org_re
direct_jump
(
insn
,
target_label
);
/* See if this jump branches around a unconditional jump.
If so, invert this jump and point it to the target of the
...
...
@@ -3578,7 +3595,7 @@ relax_delay_slots (first)
++
LABEL_NUSES
(
other_target
);
if
(
invert_jump
(
other
,
target_label
))
redirect_jump
(
insn
,
other_target
);
re
org_re
direct_jump
(
insn
,
other_target
);
if
(
other_target
)
--
LABEL_NUSES
(
other_target
);
...
...
@@ -3620,7 +3637,7 @@ relax_delay_slots (first)
if
(
trial
!=
target_label
)
{
redirect_jump
(
delay_insn
,
trial
);
re
org_re
direct_jump
(
delay_insn
,
trial
);
target_label
=
trial
;
}
...
...
@@ -3635,7 +3652,7 @@ relax_delay_slots (first)
target_label
=
find_end_label
();
else
target_label
=
get_label_before
(
trial
);
redirect_jump
(
delay_insn
,
target_label
);
re
org_re
direct_jump
(
delay_insn
,
target_label
);
next
=
insn
;
continue
;
}
...
...
@@ -3652,7 +3669,7 @@ relax_delay_slots (first)
target_label
=
JUMP_LABEL
(
XVECEXP
(
PATTERN
(
trial
),
0
,
0
));
if
(
target_label
==
0
)
target_label
=
find_end_label
();
redirect_jump
(
delay_insn
,
target_label
);
re
org_re
direct_jump
(
delay_insn
,
target_label
);
next
=
insn
;
continue
;
}
...
...
@@ -3802,9 +3819,9 @@ make_return_insns (first)
/* If we can't make the jump into a RETURN, redirect it to the best
RETURN and go on to the next insn. */
if
(
!
redirect_jump
(
jump_insn
,
NULL_RTX
))
if
(
!
re
org_re
direct_jump
(
jump_insn
,
NULL_RTX
))
{
redirect_jump
(
jump_insn
,
real_return_label
);
re
org_re
direct_jump
(
jump_insn
,
real_return_label
);
continue
;
}
...
...
@@ -3860,7 +3877,7 @@ make_return_insns (first)
else
/* It is probably more efficient to keep this with its current
delay slot as a branch to a RETURN. */
redirect_jump
(
jump_insn
,
real_return_label
);
re
org_re
direct_jump
(
jump_insn
,
real_return_label
);
}
/* Now delete REAL_RETURN_LABEL if we never used it. Then try to fill any
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment