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
d6fa2d17
Commit
d6fa2d17
authored
14 years ago
by
Xinliang David Li
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improve address offset range computation
From-SVN: r163081
parent
9995f209
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
32 additions
and
17 deletions
+32
-17
gcc/ChangeLog
+5
-0
gcc/testsuite/ChangeLog
+4
-0
gcc/testsuite/gcc.dg/tree-ssa/loop-19.c
+1
-1
gcc/tree-ssa-loop-ivopts.c
+22
-16
No files found.
gcc/ChangeLog
View file @
d6fa2d17
2010-08-10 Xinliang David Li <davidxl@google.com>
* tree-ssa-loop-ivopts.c (get_address_cost): Properly
compute max/min offset in address.
2010-08-10 Vladimir Makarov <vmakarov@redhat.com>
* ira-live.c: Include sbitmap.h.
...
...
This diff is collapsed.
Click to expand it.
gcc/testsuite/ChangeLog
View file @
d6fa2d17
2010-08-10 xinliang David Li <davidxl@google.com>
* gcc.dg/tree-ssa/loop-19.c: Add option
-fno-prefetch-loop-array
2010-08-10 Bernd Schmidt <bernds@codesourcery.com>
PR middle-end/45182
...
...
This diff is collapsed.
Click to expand it.
gcc/testsuite/gcc.dg/tree-ssa/loop-19.c
View file @
d6fa2d17
...
...
@@ -6,7 +6,7 @@
/* { dg-do compile { target { i?86-*-* || { x86_64-*-* || powerpc_hard_double } } } } */
/* { dg-require-effective-target nonpic } */
/* { dg-options "-O3 -fdump-tree-optimized" } */
/* { dg-options "-O3 -f
no-prefetch-loop-arrays -f
dump-tree-optimized" } */
# define N 2000000
static
double
a
[
N
],
c
[
N
];
...
...
This diff is collapsed.
Click to expand it.
gcc/tree-ssa-loop-ivopts.c
View file @
d6fa2d17
...
...
@@ -3241,9 +3241,8 @@ get_address_cost (bool symbol_present, bool var_present,
if
(
!
data
)
{
HOST_WIDE_INT
i
;
HOST_WIDE_INT
start
=
BIGGEST_ALIGNMENT
/
BITS_PER_UNIT
;
HOST_WIDE_INT
rat
,
off
;
int
old_cse_not_expected
;
HOST_WIDE_INT
rat
,
off
=
0
;
int
old_cse_not_expected
,
width
;
unsigned
sym_p
,
var_p
,
off_p
,
rat_p
,
add_c
;
rtx
seq
,
addr
,
base
;
rtx
reg0
,
reg1
;
...
...
@@ -3252,33 +3251,40 @@ get_address_cost (bool symbol_present, bool var_present,
reg1
=
gen_raw_REG
(
address_mode
,
LAST_VIRTUAL_REGISTER
+
1
);
width
=
GET_MODE_BITSIZE
(
address_mode
)
-
1
;
if
(
width
>
(
HOST_BITS_PER_WIDE_INT
-
1
))
width
=
HOST_BITS_PER_WIDE_INT
-
1
;
addr
=
gen_rtx_fmt_ee
(
PLUS
,
address_mode
,
reg1
,
NULL_RTX
);
for
(
i
=
start
;
i
<=
1
<<
20
;
i
<<=
1
)
for
(
i
=
width
;
i
>=
0
;
i
--
)
{
XEXP
(
addr
,
1
)
=
gen_int_mode
(
i
,
address_mode
);
if
(
!
memory_address_addr_space_p
(
mem_mode
,
addr
,
as
))
off
=
-
((
HOST_WIDE_INT
)
1
<<
i
);
XEXP
(
addr
,
1
)
=
gen_int_mode
(
off
,
address_mode
);
if
(
memory_address_addr_space_p
(
mem_mode
,
addr
,
as
))
break
;
}
data
->
max_offset
=
i
==
start
?
0
:
i
>>
1
;
off
=
data
->
max_offset
;
data
->
min_offset
=
(
i
==
-
1
?
0
:
off
);
for
(
i
=
start
;
i
<=
1
<<
20
;
i
<<=
1
)
for
(
i
=
width
;
i
>=
0
;
i
--
)
{
XEXP
(
addr
,
1
)
=
gen_int_mode
(
-
i
,
address_mode
);
if
(
!
memory_address_addr_space_p
(
mem_mode
,
addr
,
as
))
off
=
((
HOST_WIDE_INT
)
1
<<
i
)
-
1
;
XEXP
(
addr
,
1
)
=
gen_int_mode
(
off
,
address_mode
);
if
(
memory_address_addr_space_p
(
mem_mode
,
addr
,
as
))
break
;
}
data
->
min_offset
=
i
==
start
?
0
:
-
(
i
>>
1
);
if
(
i
==
-
1
)
off
=
0
;
data
->
max_offset
=
off
;
if
(
dump_file
&&
(
dump_flags
&
TDF_DETAILS
))
{
fprintf
(
dump_file
,
"get_address_cost:
\n
"
);
fprintf
(
dump_file
,
" min offset %s
%d
\n
"
,
fprintf
(
dump_file
,
" min offset %s
"
HOST_WIDE_INT_PRINT_DEC
"
\n
"
,
GET_MODE_NAME
(
mem_mode
),
(
int
)
data
->
min_offset
);
fprintf
(
dump_file
,
" max offset %s
%d
\n
"
,
data
->
min_offset
);
fprintf
(
dump_file
,
" max offset %s
"
HOST_WIDE_INT_PRINT_DEC
"
\n
"
,
GET_MODE_NAME
(
mem_mode
),
(
int
)
data
->
max_offset
);
data
->
max_offset
);
}
rat
=
1
;
...
...
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