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
290358f7
Commit
290358f7
authored
May 06, 2007
by
Revital Eres
Committed by
Revital Eres
May 06, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix PR30957
From-SVN: r124471
parent
19df3b83
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
73 additions
and
3 deletions
+73
-3
gcc/ChangeLog
+6
-0
gcc/loop-unroll.c
+32
-3
gcc/testsuite/ChangeLog
+5
-0
gcc/testsuite/gcc.dg/pr30957-1.c
+30
-0
No files found.
gcc/ChangeLog
View file @
290358f7
2007-06-05 Revital Eres <eres@il.ibm.com>
PR 30957
* loop-unroll.c (insert_var_expansion_initialization):
Initialize the expansions with -zero instead of +zero.
2007-05-05 Aurelien Jarno <aurelien@aurel32.net>
* config/pa/pa.md: Split tgd_load, tld_load and tie_load
...
...
gcc/loop-unroll.c
View file @
290358f7
...
...
@@ -2014,7 +2014,30 @@ expand_var_during_unrolling (struct var_to_expand *ve, rtx insn)
/* Initialize the variable expansions in loop preheader.
Callbacks for htab_traverse. PLACE_P is the loop-preheader
basic block where the initialization of the expansions
should take place. */
should take place. The expansions are initialized with (-0)
when the operation is plus or minus to honor sign zero.
This way we can prevent cases where the sign of the final result is
effected by the sign of the expansion.
Here is an example to demonstrate this:
for (i = 0 ; i < n; i++)
sum += something;
==>
sum += something
....
i = i+1;
sum1 += something
....
i = i+1
sum2 += something;
....
When SUM is initialized with -zero and SOMETHING is also -zero; the
final result of sum should be -zero thus the expansions sum1 and sum2
should be initialized with -zero as well (otherwise we will get +zero
as the final result). */
static
int
insert_var_expansion_initialization
(
void
**
slot
,
void
*
place_p
)
...
...
@@ -2023,7 +2046,9 @@ insert_var_expansion_initialization (void **slot, void *place_p)
basic_block
place
=
(
basic_block
)
place_p
;
rtx
seq
,
var
,
zero_init
,
insn
;
unsigned
i
;
enum
machine_mode
mode
=
GET_MODE
(
ve
->
reg
);
bool
honor_signed_zero_p
=
HONOR_SIGNED_ZEROS
(
mode
);
if
(
VEC_length
(
rtx
,
ve
->
var_expansions
)
==
0
)
return
1
;
...
...
@@ -2031,7 +2056,11 @@ insert_var_expansion_initialization (void **slot, void *place_p)
if
(
ve
->
op
==
PLUS
||
ve
->
op
==
MINUS
)
for
(
i
=
0
;
VEC_iterate
(
rtx
,
ve
->
var_expansions
,
i
,
var
);
i
++
)
{
zero_init
=
CONST0_RTX
(
GET_MODE
(
var
));
if
(
honor_signed_zero_p
)
zero_init
=
simplify_gen_unary
(
NEG
,
mode
,
CONST0_RTX
(
mode
),
mode
);
else
zero_init
=
CONST0_RTX
(
mode
);
emit_move_insn
(
var
,
zero_init
);
}
else
if
(
ve
->
op
==
MULT
)
...
...
gcc/testsuite/ChangeLog
View file @
290358f7
2007
-
06
-
05
Revital
Eres
<
eres
@il
.
ibm
.
com
>
PR
30957
*
gcc
.
dg
/
pr30957
-
1
.
c
:
New
test
.
2007
-
05
-
05
Jerry
DeLisle
<
jvdelisle
@gcc
.
gnu
.
org
>
PR
fortran
/
31251
gcc/testsuite/gcc.dg/pr30957-1.c
0 → 100644
View file @
290358f7
/* { dg-do run { xfail vax-*-* powerpc-*-*spe } } */
/* { dg-options "-O2 -funroll-loops -funsafe-math-optimizations -fvariable-expansion-in-unroller -dL" } */
extern
void
abort
(
void
);
extern
void
exit
(
int
);
float
foo
(
float
d
,
int
n
)
{
unsigned
i
;
float
accum
=
d
;
for
(
i
=
0
;
i
<
n
;
i
++
)
accum
+=
d
;
return
accum
;
}
int
main
()
{
if
(
__builtin_copysignf
(
1
.
0
,
foo
(
0
.
0
/
-
5
.
0
,
10
))
!=
-
1
.
0
)
abort
();
exit
(
0
);
}
/* { dg-final { scan-rtl-dump "Expanding Accumulator" "loop2_unroll" } } */
/* { dg-final { cleanup-rtl-dump "loop*" } } */
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