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
58ecb5e2
Commit
58ecb5e2
authored
Nov 24, 2000
by
Richard Sandiford
Committed by
Bernd Schmidt
Nov 24, 2000
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Avoid a bit of copy propagation when there's a REG_EQUIV note
From-SVN: r37705
parent
c3410241
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
21 additions
and
6 deletions
+21
-6
gcc/ChangeLog
+6
-0
gcc/cse.c
+15
-6
No files found.
gcc/ChangeLog
View file @
58ecb5e2
...
...
@@ -3,6 +3,12 @@
* combine.c (cant_combine_insn_p): New function.
(try_combine): Use it.
2000-11-24 Richard Sandiford <rsandifo@redhat.com>
* gcc/cse.c (cse_insn): Removed conversion of REG_EQUIV to REG_EQUAL
when reversing a register-to-register copy. Reversal now disabled
when the previous instruction has a REG_EQUIV.
2000-11-24 Nathan Sidwell <nathan@codesourcery.com>
* c-parse.in (unary_expr): Move VA_ARG from here ...
...
...
gcc/cse.c
View file @
58ecb5e2
...
...
@@ -6238,23 +6238,32 @@ cse_insn (insn, libcall_insn)
{
rtx
prev
=
prev_nonnote_insn
(
insn
);
/* Do not swap the registers around if the previous instruction
attaches a REG_EQUIV note to REG1.
??? It's not entirely clear whether we can transfer a REG_EQUIV
from the pseudo that originally shadowed an incoming argument
to another register. Some uses of REG_EQUIV might rely on it
being attached to REG1 rather than REG2.
This section previously turned the REG_EQUIV into a REG_EQUAL
note. We cannot do that because REG_EQUIV may provide an
uninitialised stack slot when REG_PARM_STACK_SPACE is used. */
if
(
prev
!=
0
&&
GET_CODE
(
prev
)
==
INSN
&&
GET_CODE
(
PATTERN
(
prev
))
==
SET
&&
SET_DEST
(
PATTERN
(
prev
))
==
SET_SRC
(
sets
[
0
].
rtl
))
&&
SET_DEST
(
PATTERN
(
prev
))
==
SET_SRC
(
sets
[
0
].
rtl
)
&&
!
find_reg_note
(
prev
,
REG_EQUIV
,
NULL_RTX
))
{
rtx
dest
=
SET_DEST
(
sets
[
0
].
rtl
);
rtx
src
=
SET_SRC
(
sets
[
0
].
rtl
);
rtx
note
=
find_reg_note
(
prev
,
REG_EQUIV
,
NULL_RTX
)
;
rtx
note
;
validate_change
(
prev
,
&
SET_DEST
(
PATTERN
(
prev
)),
dest
,
1
);
validate_change
(
insn
,
&
SET_DEST
(
sets
[
0
].
rtl
),
src
,
1
);
validate_change
(
insn
,
&
SET_SRC
(
sets
[
0
].
rtl
),
dest
,
1
);
apply_change_group
();
/* If REG1 was equivalent to a constant, REG0 is not. */
if
(
note
)
PUT_REG_NOTE_KIND
(
note
,
REG_EQUAL
);
/* If there was a REG_WAS_0 note on PREV, remove it. Move
any REG_WAS_0 note on INSN to PREV. */
note
=
find_reg_note
(
prev
,
REG_WAS_0
,
NULL_RTX
);
...
...
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