This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug optimization/12092] ICE: Floating point exception


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)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]