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
00dba523
Commit
00dba523
authored
24 years ago
by
Nick Clifton
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
oops - omitted from previous delta
From-SVN: r38838
parent
6e2d9a7a
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
24 additions
and
35 deletions
+24
-35
gcc/config/rs6000/rs6000-protos.h
+0
-2
gcc/config/rs6000/rs6000.c
+15
-29
gcc/config/rs6000/rs6000.h
+8
-3
gcc/config/rs6000/sysv4.h
+1
-1
No files found.
gcc/config/rs6000/rs6000-protos.h
View file @
00dba523
...
...
@@ -147,8 +147,6 @@ extern struct rtx_def *rs6000_float_const PARAMS ((const char *,
extern
int
direct_return
PARAMS
((
void
));
extern
int
get_issue_rate
PARAMS
((
void
));
extern
union
tree_node
*
rs6000_build_va_list
PARAMS
((
void
));
extern
void
rs6000_save_machine_status
PARAMS
((
struct
function
*
));
extern
void
rs6000_restore_machine_status
PARAMS
((
struct
function
*
));
extern
void
rs6000_init_expanders
PARAMS
((
void
));
extern
int
first_reg_to_save
PARAMS
((
void
));
extern
int
first_fp_reg_to_save
PARAMS
((
void
));
...
...
This diff is collapsed.
Click to expand it.
gcc/config/rs6000/rs6000.c
View file @
00dba523
...
...
@@ -89,9 +89,6 @@ const char *rs6000_sdata_name = (char *)0;
int
fixuplabelno
=
0
;
#endif
/* Whether a System V.4 varargs area was created. */
int
rs6000_sysv_varargs_p
;
/* ABI enumeration available for subtarget to use. */
enum
rs6000_abi
rs6000_current_abi
;
...
...
@@ -2221,7 +2218,7 @@ setup_incoming_varargs (cum, mode, type, pretend_size, no_rtl)
/* Indicate to allocate space on the stack for varargs save area. */
/* ??? Does this really have to be located at a magic spot on the
stack, or can we allocate this with assign_stack_local instead. */
rs6000_
sysv_varargs_p
=
1
;
cfun
->
machine
->
sysv_varargs_p
=
1
;
if
(
!
no_rtl
)
save_area
=
plus_constant
(
virtual_stack_vars_rtx
,
-
RS6000_VARARGS_SIZE
);
...
...
@@ -2231,7 +2228,7 @@ setup_incoming_varargs (cum, mode, type, pretend_size, no_rtl)
else
{
save_area
=
virtual_incoming_args_rtx
;
rs6000_
sysv_varargs_p
=
0
;
cfun
->
machine
->
sysv_varargs_p
=
0
;
first_reg_offset
=
cum
->
words
;
if
(
MUST_PASS_IN_STACK
(
mode
,
type
))
...
...
@@ -3620,50 +3617,39 @@ rs6000_got_register (value)
return
pic_offset_table_rtx
;
}
/* Define the structure for the machine field in struct function. */
struct
machine_function
{
int
sysv_varargs_p
;
};
/* Functions to save and restore sysv_varargs_p.
These will be called, via pointer variables,
from push_function_context and pop_function_context. */
void
rs6000_
save
_machine_status
(
p
)
static
void
rs6000_
init
_machine_status
(
p
)
struct
function
*
p
;
{
struct
machine_function
*
machine
=
(
struct
machine_function
*
)
xmalloc
(
sizeof
(
struct
machine_function
));
p
->
machine
=
(
machine_function
*
)
xmalloc
(
sizeof
(
machine_function
));
p
->
machine
=
machine
;
machine
->
sysv_varargs_p
=
rs6000_sysv_varargs_p
;
p
->
machine
->
sysv_varargs_p
=
0
;
}
void
rs6000_
restor
e_machine_status
(
p
)
static
void
rs6000_
fre
e_machine_status
(
p
)
struct
function
*
p
;
{
struct
machine_function
*
machine
=
p
->
machine
;
rs6000_sysv_varargs_p
=
machine
->
sysv_varargs_p
;
if
(
p
->
machine
==
NULL
)
return
;
free
(
machine
);
p
->
machine
=
(
struct
machine_function
*
)
0
;
free
(
p
->
machine
);
p
->
machine
=
NULL
;
}
/* Do anything needed before RTL is emitted for each function. */
void
rs6000_init_expanders
()
{
/* Reset varargs */
rs6000_sysv_varargs_p
=
0
;
/* Arrange to save and restore machine status around nested functions. */
save_machine_status
=
rs6000_save
_machine_status
;
restore_machine_status
=
rs6000_restor
e_machine_status
;
init_machine_status
=
rs6000_init
_machine_status
;
free_machine_status
=
rs6000_fre
e_machine_status
;
}
...
...
This diff is collapsed.
Click to expand it.
gcc/config/rs6000/rs6000.h
View file @
00dba523
...
...
@@ -1226,9 +1226,6 @@ typedef struct rs6000_stack {
/* Size of the V.4 varargs area if needed */
#define RS6000_VARARGS_AREA 0
/* Whether a V.4 varargs area is needed */
extern
int
rs6000_sysv_varargs_p
;
/* Align an address */
#define RS6000_ALIGN(n,a) (((n) + (a) - 1) & ~((a) - 1))
...
...
@@ -1385,6 +1382,14 @@ extern int rs6000_sysv_varargs_p;
|| ((unsigned)((N) - FP_ARG_MIN_REG) < (unsigned)(FP_ARG_NUM_REG)))
/* A C structure for machine-specific, per-function data.
This is added to the cfun structure. */
typedef
struct
machine_function
{
/* Whether a System V.4 varargs area was created. */
int
sysv_varargs_p
;
}
machine_function
;
/* Define a data type for recording info about an argument list
during the scan of that argument list. This data type should
hold all necessary information about the function itself
...
...
This diff is collapsed.
Click to expand it.
gcc/config/rs6000/sysv4.h
View file @
00dba523
...
...
@@ -312,7 +312,7 @@ do { \
/* Size of the V.4 varargs area if needed. */
/* Override rs6000.h definition. */
#undef RS6000_VARARGS_AREA
#define RS6000_VARARGS_AREA ((
rs6000_
sysv_varargs_p) ? RS6000_VARARGS_SIZE : 0)
#define RS6000_VARARGS_AREA ((
cfun->machine->
sysv_varargs_p) ? RS6000_VARARGS_SIZE : 0)
/* Override default big endianism definitions in rs6000.h. */
#undef BYTES_BIG_ENDIAN
...
...
This diff is collapsed.
Click to expand it.
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