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;
...
@@ -173,6 +173,11 @@ static int last_call_cuid;
static
rtx
subst_insn
;
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.
/* 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
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
after this CUID. If not for this mechanism, we could get confused if
...
@@ -1358,8 +1363,9 @@ try_combine (i3, i2, i1)
...
@@ -1358,8 +1363,9 @@ try_combine (i3, i2, i1)
never appear in the insn stream so giving it the same INSN_UID
never appear in the insn stream so giving it the same INSN_UID
as I2 will not cause a problem. */
as I2 will not cause a problem. */
i1
=
gen_rtx
(
INSN
,
VOIDmode
,
INSN_UID
(
i2
),
0
,
i2
,
subst_prev_insn
=
i1
XVECEXP
(
PATTERN
(
i2
),
0
,
1
),
-
1
,
0
,
0
);
=
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
(
PATTERN
(
i2
),
XVECEXP
(
PATTERN
(
i2
),
0
,
0
));
SUBST
(
XEXP
(
SET_SRC
(
PATTERN
(
i2
)),
0
),
SUBST
(
XEXP
(
SET_SRC
(
PATTERN
(
i2
)),
0
),
...
@@ -9943,9 +9949,12 @@ get_last_value (x)
...
@@ -9943,9 +9949,12 @@ get_last_value (x)
/* If the value was set in a later insn than the ones we are processing,
/* 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
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
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
;
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