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
0d9641d1
Commit
0d9641d1
authored
Apr 17, 1995
by
Jim Wilson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(subst_prev_insn): New variable.
(try_combine): Set it. (get_last_value): Use it. From-SVN: r9396
parent
4ffeab02
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
13 additions
and
4 deletions
+13
-4
gcc/combine.c
+13
-4
No files found.
gcc/combine.c
View file @
0d9641d1
...
...
@@ -173,6 +173,11 @@ static int last_call_cuid;
static
rtx
subst_insn
;
/* This is an insn that belongs before subst_insn, but is not currently
on the insn chain. */
static
rtx
subst_prev_insn
;
/* This is the lowest CUID that `subst' is currently dealing with.
get_last_value will not return a value if the register was set at or
after this CUID. If not for this mechanism, we could get confused if
...
...
@@ -1358,8 +1363,9 @@ try_combine (i3, i2, i1)
never appear in the insn stream so giving it the same INSN_UID
as I2 will not cause a problem. */
i1
=
gen_rtx
(
INSN
,
VOIDmode
,
INSN_UID
(
i2
),
0
,
i2
,
XVECEXP
(
PATTERN
(
i2
),
0
,
1
),
-
1
,
0
,
0
);
subst_prev_insn
=
i1
=
gen_rtx
(
INSN
,
VOIDmode
,
INSN_UID
(
i2
),
0
,
i2
,
XVECEXP
(
PATTERN
(
i2
),
0
,
1
),
-
1
,
0
,
0
);
SUBST
(
PATTERN
(
i2
),
XVECEXP
(
PATTERN
(
i2
),
0
,
0
));
SUBST
(
XEXP
(
SET_SRC
(
PATTERN
(
i2
)),
0
),
...
...
@@ -9943,9 +9949,12 @@ get_last_value (x)
/* If the value was set in a later insn than the ones we are processing,
we can't use it even if the register was only set once, but make a quick
check to see if the previous insn set it to something. This is commonly
the case when the same pseudo is used by repeated insns. */
the case when the same pseudo is used by repeated insns.
This does not work if there exists an instruction which is temporarily
not on the insn chain. */
if
(
INSN_CUID
(
reg_last_set
[
regno
])
>=
subst_low_cuid
)
if
(
INSN_CUID
(
reg_last_set
[
regno
])
>=
subst_low_cuid
&&
!
subst_prev_insn
)
{
rtx
insn
,
set
;
...
...
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