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
72613dfa
Commit
72613dfa
authored
Jan 23, 2004
by
Jan Hubicka
Committed by
Jakub Jelinek
Jan 23, 2004
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* i386.c (ix86_emit_restore_regs_using_mov): Deal with large offsets.
From-SVN: r76416
parent
7be4d808
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
21 additions
and
4 deletions
+21
-4
gcc/ChangeLog
+4
-0
gcc/config/i386/i386.c
+17
-4
No files found.
gcc/ChangeLog
View file @
72613dfa
2003-11-30 Jan Hubicka <jh@suse.cz>
* i386.c (ix86_emit_restore_regs_using_mov): Deal with large offsets.
2004-01-23 J"orn Rennecke <joern.rennecke@superh.com>
2004-01-23 J"orn Rennecke <joern.rennecke@superh.com>
* doc/tm.texi: Insert some weasel words when LOAD_EXTEND_OP
* doc/tm.texi: Insert some weasel words when LOAD_EXTEND_OP
...
...
gcc/config/i386/i386.c
View file @
72613dfa
...
@@ -808,7 +808,7 @@ static int ix86_split_to_parts (rtx, rtx *, enum machine_mode);
...
@@ -808,7 +808,7 @@ static int ix86_split_to_parts (rtx, rtx *, enum machine_mode);
static
int
ix86_nsaved_regs
(
void
);
static
int
ix86_nsaved_regs
(
void
);
static
void
ix86_emit_save_regs
(
void
);
static
void
ix86_emit_save_regs
(
void
);
static
void
ix86_emit_save_regs_using_mov
(
rtx
,
HOST_WIDE_INT
);
static
void
ix86_emit_save_regs_using_mov
(
rtx
,
HOST_WIDE_INT
);
static
void
ix86_emit_restore_regs_using_mov
(
rtx
,
int
,
int
);
static
void
ix86_emit_restore_regs_using_mov
(
rtx
,
HOST_WIDE_INT
,
int
);
static
void
ix86_output_function_epilogue
(
FILE
*
,
HOST_WIDE_INT
);
static
void
ix86_output_function_epilogue
(
FILE
*
,
HOST_WIDE_INT
);
static
void
ix86_set_move_mem_attrs_1
(
rtx
,
rtx
,
rtx
,
rtx
,
rtx
);
static
void
ix86_set_move_mem_attrs_1
(
rtx
,
rtx
,
rtx
,
rtx
,
rtx
);
static
void
ix86_sched_reorder_ppro
(
rtx
*
,
rtx
*
);
static
void
ix86_sched_reorder_ppro
(
rtx
*
,
rtx
*
);
...
@@ -5278,16 +5278,29 @@ ix86_expand_prologue (void)
...
@@ -5278,16 +5278,29 @@ ix86_expand_prologue (void)
/* Emit code to restore saved registers using MOV insns. First register
/* Emit code to restore saved registers using MOV insns. First register
is restored from POINTER + OFFSET. */
is restored from POINTER + OFFSET. */
static
void
static
void
ix86_emit_restore_regs_using_mov
(
rtx
pointer
,
int
offset
,
int
maybe_eh_return
)
ix86_emit_restore_regs_using_mov
(
rtx
pointer
,
HOST_WIDE_INT
offset
,
int
maybe_eh_return
)
{
{
int
regno
;
int
regno
;
rtx
base_address
=
gen_rtx_MEM
(
Pmode
,
pointer
);
for
(
regno
=
0
;
regno
<
FIRST_PSEUDO_REGISTER
;
regno
++
)
for
(
regno
=
0
;
regno
<
FIRST_PSEUDO_REGISTER
;
regno
++
)
if
(
ix86_save_reg
(
regno
,
maybe_eh_return
))
if
(
ix86_save_reg
(
regno
,
maybe_eh_return
))
{
{
/* Ensure that adjust_address won't be forced to produce pointer
out of range allowed by x86-64 instruction set. */
if
(
TARGET_64BIT
&&
offset
!=
trunc_int_for_mode
(
offset
,
SImode
))
{
rtx
r11
;
r11
=
gen_rtx_REG
(
DImode
,
FIRST_REX_INT_REG
+
3
/* R11 */
);
emit_move_insn
(
r11
,
GEN_INT
(
offset
));
emit_insn
(
gen_adddi3
(
r11
,
r11
,
pointer
));
base_address
=
gen_rtx_MEM
(
Pmode
,
r11
);
offset
=
0
;
}
emit_move_insn
(
gen_rtx_REG
(
Pmode
,
regno
),
emit_move_insn
(
gen_rtx_REG
(
Pmode
,
regno
),
adjust_address
(
gen_rtx_MEM
(
Pmode
,
pointer
),
adjust_address
(
base_address
,
Pmode
,
offset
));
Pmode
,
offset
));
offset
+=
UNITS_PER_WORD
;
offset
+=
UNITS_PER_WORD
;
}
}
}
}
...
...
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