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
369c7ab6
Commit
369c7ab6
authored
Dec 28, 1994
by
Jim Wilson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(find_equiv_reg): Exclude registers clobbered in the
CALL_INSN_FUNCTION_USAGE field of a CALL_INSN. From-SVN: r8696
parent
581d4b9d
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
45 additions
and
0 deletions
+45
-0
gcc/reload.c
+45
-0
No files found.
gcc/reload.c
View file @
369c7ab6
...
...
@@ -5584,6 +5584,51 @@ find_equiv_reg (goal, insn, class, other, reload_reg_p, goalreg, mode)
}
}
if
(
GET_CODE
(
p
)
==
CALL_INSN
&&
CALL_INSN_FUNCTION_USAGE
(
p
))
{
rtx
link
;
for
(
link
=
CALL_INSN_FUNCTION_USAGE
(
p
);
XEXP
(
link
,
1
)
!=
0
;
link
=
XEXP
(
link
,
1
))
{
pat
=
XEXP
(
link
,
0
);
if
(
GET_CODE
(
pat
)
==
CLOBBER
)
{
register
rtx
dest
=
SET_DEST
(
pat
);
while
(
GET_CODE
(
dest
)
==
SUBREG
||
GET_CODE
(
dest
)
==
ZERO_EXTRACT
||
GET_CODE
(
dest
)
==
SIGN_EXTRACT
||
GET_CODE
(
dest
)
==
STRICT_LOW_PART
)
dest
=
XEXP
(
dest
,
0
);
if
(
GET_CODE
(
dest
)
==
REG
)
{
register
int
xregno
=
REGNO
(
dest
);
int
xnregs
;
if
(
REGNO
(
dest
)
<
FIRST_PSEUDO_REGISTER
)
xnregs
=
HARD_REGNO_NREGS
(
xregno
,
GET_MODE
(
dest
));
else
xnregs
=
1
;
if
(
xregno
<
regno
+
nregs
&&
xregno
+
xnregs
>
regno
)
return
0
;
if
(
xregno
<
valueno
+
valuenregs
&&
xregno
+
xnregs
>
valueno
)
return
0
;
if
(
goal_mem_addr_varies
&&
reg_overlap_mentioned_for_reload_p
(
dest
,
goal
))
return
0
;
}
else
if
(
goal_mem
&&
GET_CODE
(
dest
)
==
MEM
&&
!
push_operand
(
dest
,
GET_MODE
(
dest
)))
return
0
;
else
if
(
need_stable_sp
&&
push_operand
(
dest
,
GET_MODE
(
dest
)))
return
0
;
}
}
}
#ifdef AUTO_INC_DEC
/* If this insn auto-increments or auto-decrements
either regno or valueno, return 0 now.
...
...
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