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
1edcd60b
Commit
1edcd60b
authored
Nov 12, 2001
by
Richard Kenner
Committed by
Richard Kenner
Nov 12, 2001
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* alias.c (nonoverlapping_memrefs_p): Handle DECL_RTL being a CONCAT.
From-SVN: r46938
parent
769828ab
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
13 additions
and
8 deletions
+13
-8
gcc/ChangeLog
+4
-0
gcc/alias.c
+9
-8
No files found.
gcc/ChangeLog
View file @
1edcd60b
Mon
Nov
12
05
:
18
:
42
2001
Richard
Kenner
<
kenner
@vlsi1
.
ultra
.
nyu
.
edu
>
*
alias
.
c
(
nonoverlapping_memrefs_p
)
:
Handle
DECL_RTL
being
a
CONCAT
.
2001
-
11
-
12
Kazu
Hirata
<
kazu
@hxi
.
com
>
*
config
/
h8300
/
h8300
.
c
(
shift_alg_qi
)
:
New
.
...
...
gcc/alias.c
View file @
1edcd60b
...
...
@@ -1780,21 +1780,22 @@ nonoverlapping_memrefs_p (x, y)
rtlx
=
DECL_RTL
(
MEM_DECL
(
x
));
rtly
=
DECL_RTL
(
MEM_DECL
(
y
));
/* If either RTL is a REG, they can't overlap unless they are the same
because we never reuse that part of the stack frame used for locals for
spilled pseudos. */
if
((
REG_P
(
rtlx
)
||
REG_P
(
rtly
))
&&
!
rtx_equal_p
(
rtlx
,
rtly
))
/* If either RTL is not a MEM, it must be a REG or CONCAT, meaning they
can't overlap unless they are the same because we never reuse that part
of the stack frame used for locals for spilled pseudos. */
if
((
GET_CODE
(
rtlx
)
!=
MEM
||
GET_CODE
(
rtly
)
!=
MEM
)
&&
!
rtx_equal_p
(
rtlx
,
rtly
))
return
1
;
/* Get the base and offsets of both decls. If either is a register, we
know both are and are the same, so use that as the base. The only
we can avoid overlap is if we can deduce that they are nonoverlapping
pieces of that decl, which is very rare. */
basex
=
REG_P
(
rtlx
)
?
rtlx
:
XEXP
(
rtlx
,
0
)
;
basex
=
GET_CODE
(
rtlx
)
==
MEM
?
XEXP
(
rtlx
,
0
)
:
rtlx
;
if
(
GET_CODE
(
basex
)
==
PLUS
&&
GET_CODE
(
XEXP
(
basex
,
1
))
==
CONST_INT
)
offsetx
=
INTVAL
(
XEXP
(
basex
,
1
)),
basex
=
XEXP
(
basex
,
0
);
basey
=
REG_P
(
rtly
)
?
rtly
:
XEXP
(
rtly
,
0
)
;
basey
=
GET_CODE
(
rtly
)
==
MEM
?
XEXP
(
rtly
,
0
)
:
rtly
;
if
(
GET_CODE
(
basey
)
==
PLUS
&&
GET_CODE
(
XEXP
(
basey
,
1
))
==
CONST_INT
)
offsety
=
INTVAL
(
XEXP
(
basey
,
1
)),
basey
=
XEXP
(
basey
,
0
);
...
...
@@ -1809,10 +1810,10 @@ nonoverlapping_memrefs_p (x, y)
||
(
CONSTANT_P
(
basey
)
&&
REG_P
(
basex
)
&&
REGNO
(
basex
)
<=
LAST_VIRTUAL_REGISTER
));
sizex
=
(
REG_P
(
rtlx
)
?
GET_MODE_SIZE
(
GET_MODE
(
rtlx
))
sizex
=
(
GET_CODE
(
rtlx
)
!=
MEM
?
GET_MODE_SIZE
(
GET_MODE
(
rtlx
))
:
MEM_SIZE
(
rtlx
)
?
INTVAL
(
MEM_SIZE
(
rtlx
))
:
-
1
);
sizey
=
(
REG_P
(
rtly
)
?
GET_MODE_SIZE
(
GET_MODE
(
rtly
))
sizey
=
(
GET_CODE
(
rtly
)
!=
MEM
?
GET_MODE_SIZE
(
GET_MODE
(
rtly
))
:
MEM_SIZE
(
rtly
)
?
INTVAL
(
MEM_SIZE
(
rtly
))
:
-
1
);
...
...
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