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
39ba6ab7
Commit
39ba6ab7
authored
Jul 04, 2009
by
Eric Botcazou
Committed by
Eric Botcazou
Jul 04, 2009
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
From-SVN: r149234
parent
93a8ba61
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
19 additions
and
20 deletions
+19
-20
gcc/ChangeLog
+4
-0
gcc/postreload.c
+15
-20
No files found.
gcc/ChangeLog
View file @
39ba6ab7
2009-07-04 Eric Botcazou <ebotcazou@adacore.com>
* postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
2009-07-03 Vladimir Makarov <vmakarov@redhat.com>
2009-07-03 Vladimir Makarov <vmakarov@redhat.com>
PR target/40587
PR target/40587
...
...
gcc/postreload.c
View file @
39ba6ab7
...
@@ -815,22 +815,19 @@ reload_combine (void)
...
@@ -815,22 +815,19 @@ reload_combine (void)
rtx
prev
=
prev_nonnote_insn
(
insn
);
rtx
prev
=
prev_nonnote_insn
(
insn
);
rtx
prev_set
=
prev
?
single_set
(
prev
)
:
NULL_RTX
;
rtx
prev_set
=
prev
?
single_set
(
prev
)
:
NULL_RTX
;
unsigned
int
regno
=
REGNO
(
reg
);
unsigned
int
regno
=
REGNO
(
reg
);
rtx
const
_reg
=
NULL_RTX
;
rtx
index
_reg
=
NULL_RTX
;
rtx
reg_sum
=
NULL_RTX
;
rtx
reg_sum
=
NULL_RTX
;
/* Now, we need an index register.
/* Now we need to set INDEX_REG to an index register (denoted as
We'll set index_reg to this index register, const_reg to the
REGZ in the illustration above) and REG_SUM to the expression
register that is to be loaded with the constant
register+register that we want to use to substitute uses of REG
(denoted as REGZ in the substitution illustration above),
(typically in MEMs) with. First check REG and BASE for being
and reg_sum to the register-register that we want to use to
index registers; we can use them even if they are not dead. */
substitute uses of REG (typically in MEMs) with.
First check REG and BASE for being index registers;
we can use them even if they are not dead. */
if
(
TEST_HARD_REG_BIT
(
reg_class_contents
[
INDEX_REG_CLASS
],
regno
)
if
(
TEST_HARD_REG_BIT
(
reg_class_contents
[
INDEX_REG_CLASS
],
regno
)
||
TEST_HARD_REG_BIT
(
reg_class_contents
[
INDEX_REG_CLASS
],
||
TEST_HARD_REG_BIT
(
reg_class_contents
[
INDEX_REG_CLASS
],
REGNO
(
base
)))
REGNO
(
base
)))
{
{
const
_reg
=
reg
;
index
_reg
=
reg
;
reg_sum
=
plus
;
reg_sum
=
plus
;
}
}
else
else
...
@@ -847,9 +844,7 @@ reload_combine (void)
...
@@ -847,9 +844,7 @@ reload_combine (void)
&&
reg_state
[
i
].
store_ruid
<=
reg_state
[
regno
].
use_ruid
&&
reg_state
[
i
].
store_ruid
<=
reg_state
[
regno
].
use_ruid
&&
hard_regno_nregs
[
i
][
GET_MODE
(
reg
)]
==
1
)
&&
hard_regno_nregs
[
i
][
GET_MODE
(
reg
)]
==
1
)
{
{
rtx
index_reg
=
gen_rtx_REG
(
GET_MODE
(
reg
),
i
);
index_reg
=
gen_rtx_REG
(
GET_MODE
(
reg
),
i
);
const_reg
=
index_reg
;
reg_sum
=
gen_rtx_PLUS
(
GET_MODE
(
reg
),
index_reg
,
base
);
reg_sum
=
gen_rtx_PLUS
(
GET_MODE
(
reg
),
index_reg
,
base
);
break
;
break
;
}
}
...
@@ -859,19 +854,19 @@ reload_combine (void)
...
@@ -859,19 +854,19 @@ reload_combine (void)
/* Check that PREV_SET is indeed (set (REGX) (CONST_INT)) and that
/* Check that PREV_SET is indeed (set (REGX) (CONST_INT)) and that
(REGY), i.e. BASE, is not clobbered before the last use we'll
(REGY), i.e. BASE, is not clobbered before the last use we'll
create. */
create. */
if
(
prev_set
!=
0
if
(
reg_sum
&&
prev_set
&&
CONST_INT_P
(
SET_SRC
(
prev_set
))
&&
CONST_INT_P
(
SET_SRC
(
prev_set
))
&&
rtx_equal_p
(
SET_DEST
(
prev_set
),
reg
)
&&
rtx_equal_p
(
SET_DEST
(
prev_set
),
reg
)
&&
reg_state
[
regno
].
use_index
>=
0
&&
reg_state
[
regno
].
use_index
>=
0
&&
(
reg_state
[
REGNO
(
base
)].
store_ruid
&&
(
reg_state
[
REGNO
(
base
)].
store_ruid
<=
reg_state
[
regno
].
use_ruid
)
<=
reg_state
[
regno
].
use_ruid
))
&&
reg_sum
!=
0
)
{
{
int
i
;
int
i
;
/* Change destination register and, if necessary, the
/* Change destination register and, if necessary, the
constant
constant
value in PREV, the constant loading instruction. */
value in PREV, the constant loading instruction. */
validate_change
(
prev
,
&
SET_DEST
(
prev_set
),
const
_reg
,
1
);
validate_change
(
prev
,
&
SET_DEST
(
prev_set
),
index
_reg
,
1
);
if
(
reg_state
[
regno
].
offset
!=
const0_rtx
)
if
(
reg_state
[
regno
].
offset
!=
const0_rtx
)
validate_change
(
prev
,
validate_change
(
prev
,
&
SET_SRC
(
prev_set
),
&
SET_SRC
(
prev_set
),
...
@@ -900,7 +895,7 @@ reload_combine (void)
...
@@ -900,7 +895,7 @@ reload_combine (void)
remove_reg_equal_equiv_notes
(
prev
);
remove_reg_equal_equiv_notes
(
prev
);
reg_state
[
regno
].
use_index
=
RELOAD_COMBINE_MAX_USES
;
reg_state
[
regno
].
use_index
=
RELOAD_COMBINE_MAX_USES
;
reg_state
[
REGNO
(
const
_reg
)].
store_ruid
reg_state
[
REGNO
(
index
_reg
)].
store_ruid
=
reload_combine_ruid
;
=
reload_combine_ruid
;
continue
;
continue
;
}
}
...
...
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