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
363ffa50
Commit
363ffa50
authored
Jul 24, 2014
by
Jiong Wang
Committed by
Marcus Shawcroft
Jul 24, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[AArch64] Extend frame state to track WB candidates.
From-SVN: r212996
parent
51705ec1
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
23 additions
and
0 deletions
+23
-0
gcc/ChangeLog
+6
-0
gcc/config/aarch64/aarch64.c
+14
-0
gcc/config/aarch64/aarch64.h
+3
-0
No files found.
gcc/ChangeLog
View file @
363ffa50
2014
-
07
-
24
Jiong
Wang
<
jiong
.
wang
@
arm
.
com
>
*
config
/
aarch64
/
aarch64
.
h
(
frame
):
New
fields
"wb_candidate1"
and
"wb_candidate2"
.
*
config
/
aarch64
/
aarch64
.
c
(
aarch64_layout_frame
):
Initialize
above
.
2014
-
07
-
24
Roman
Gareev
<
gareevroman
@
gmail
.
com
>
*
graphite
-
isl
-
ast
-
to
-
gimple
.
c
:
...
...
gcc/config/aarch64/aarch64.c
View file @
363ffa50
...
...
@@ -1818,6 +1818,9 @@ aarch64_layout_frame (void)
#define SLOT_NOT_REQUIRED (-2)
#define SLOT_REQUIRED (-1)
cfun
->
machine
->
frame
.
wb_candidate1
=
FIRST_PSEUDO_REGISTER
;
cfun
->
machine
->
frame
.
wb_candidate2
=
FIRST_PSEUDO_REGISTER
;
/* First mark all the registers that really need to be saved... */
for
(
regno
=
R0_REGNUM
;
regno
<=
R30_REGNUM
;
regno
++
)
cfun
->
machine
->
frame
.
reg_offset
[
regno
]
=
SLOT_NOT_REQUIRED
;
...
...
@@ -1846,7 +1849,9 @@ aarch64_layout_frame (void)
{
/* FP and LR are placed in the linkage record. */
cfun
->
machine
->
frame
.
reg_offset
[
R29_REGNUM
]
=
0
;
cfun
->
machine
->
frame
.
wb_candidate1
=
R29_REGNUM
;
cfun
->
machine
->
frame
.
reg_offset
[
R30_REGNUM
]
=
UNITS_PER_WORD
;
cfun
->
machine
->
frame
.
wb_candidate2
=
R30_REGNUM
;
cfun
->
machine
->
frame
.
hardfp_offset
=
2
*
UNITS_PER_WORD
;
offset
+=
2
*
UNITS_PER_WORD
;
}
...
...
@@ -1856,6 +1861,10 @@ aarch64_layout_frame (void)
if
(
cfun
->
machine
->
frame
.
reg_offset
[
regno
]
==
SLOT_REQUIRED
)
{
cfun
->
machine
->
frame
.
reg_offset
[
regno
]
=
offset
;
if
(
cfun
->
machine
->
frame
.
wb_candidate1
==
FIRST_PSEUDO_REGISTER
)
cfun
->
machine
->
frame
.
wb_candidate1
=
regno
;
else
if
(
cfun
->
machine
->
frame
.
wb_candidate2
==
FIRST_PSEUDO_REGISTER
)
cfun
->
machine
->
frame
.
wb_candidate2
=
regno
;
offset
+=
UNITS_PER_WORD
;
}
...
...
@@ -1863,6 +1872,11 @@ aarch64_layout_frame (void)
if
(
cfun
->
machine
->
frame
.
reg_offset
[
regno
]
==
SLOT_REQUIRED
)
{
cfun
->
machine
->
frame
.
reg_offset
[
regno
]
=
offset
;
if
(
cfun
->
machine
->
frame
.
wb_candidate1
==
FIRST_PSEUDO_REGISTER
)
cfun
->
machine
->
frame
.
wb_candidate1
=
regno
;
else
if
(
cfun
->
machine
->
frame
.
wb_candidate2
==
FIRST_PSEUDO_REGISTER
&&
cfun
->
machine
->
frame
.
wb_candidate1
>=
V0_REGNUM
)
cfun
->
machine
->
frame
.
wb_candidate2
=
regno
;
offset
+=
UNITS_PER_WORD
;
}
...
...
gcc/config/aarch64/aarch64.h
View file @
363ffa50
...
...
@@ -542,6 +542,9 @@ struct GTY (()) aarch64_frame
* frame (incomming SP) to the stack_pointer. This value is always
* a multiple of STACK_BOUNDARY. */
unsigned
wb_candidate1
;
unsigned
wb_candidate2
;
HOST_WIDE_INT
frame_size
;
bool
laid_out
;
...
...
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