This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug optimization/12092] ICE: Floating point exception
- From: "pinskia at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 1 Sep 2003 04:34:39 -0000
- Subject: [Bug optimization/12092] ICE: Floating point exception
- References: <20030828094713.12092.wmertens@gentoo.org>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12092
pinskia at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|unassigned at gcc dot gnu |pinskia at gcc dot gnu dot
|dot org |org
Status|NEW |ASSIGNED
Target Milestone|--- |3.4
------- Additional Comments From pinskia at gcc dot gnu dot org 2003-09-01 04:34 -------
I think this patch will fix it but I have no way to test it as bootstrap fails for me before
applying the patch (once GCC gets back bootstrapping, I will submit this):
Index: loop.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/loop.c,v
retrieving revision 1.469
diff -u -d -b -w -u -p -r1.469 loop.c
--- loop.c 30 Jul 2003 20:28:45 -0000 1.469
+++ loop.c 1 Sep 2003 04:32:20 -0000
@@ -4029,7 +4029,7 @@ emit_prefetch_instructions (struct loop
/* Prefetch might be worthwhile only when the loads/stores are dense. */
if (PREFETCH_ONLY_DENSE_MEM)
- if (density * 256 > PREFETCH_DENSE_MEM * 100
+ if (PREFETCH_BLOCK != 0 && density * 256 > PREFETCH_DENSE_MEM * 100
&& (info[i].total_bytes / PREFETCH_BLOCK
>= PREFETCH_BLOCKS_BEFORE_LOOP_MIN))
{
@@ -4050,7 +4050,7 @@ emit_prefetch_instructions (struct loop
info[i].prefetch_in_loop = 1, info[i].prefetch_before_loop = 1;
/* Find how many prefetch instructions we'll use within the loop. */
- if (info[i].prefetch_in_loop != 0)
+ if (info[i].prefetch_in_loop != 0 && PREFETCH_BLOCK != 0)
{
info[i].prefetch_in_loop = ((info[i].stride + PREFETCH_BLOCK - 1)
/ PREFETCH_BLOCK);
@@ -4085,7 +4085,7 @@ emit_prefetch_instructions (struct loop
info[i].prefetch_in_loop = 0;
/* Find how many prefetch instructions we'll use before the loop. */
- if (info[i].prefetch_before_loop != 0)
+ if (info[i].prefetch_before_loop != 0) && PREFETCH_BLOCK != 0
{
int n = info[i].total_bytes / PREFETCH_BLOCK;
if (n > ahead)