------- Comment #3 from rguenth at gcc dot gnu dot org  2009-12-15 13:35 -------
This is a bug in the test.  Early inter-procedural SRA avoids passing array by
reference in the recurse() function and instead passes the first element
which is the only one read.  Thus the function is optimized to
an endless loop.

  static int
  recurse (char *p)
  {
    char array[500];
    array[0] = 1;
    return *p + recurse (array);
  }

  int
  main (void)
  {
    return recurse ("\1");
  }

on i686 (or with -m32) this does not happen - Martin, any idea why?


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jamborm at gcc dot gnu dot
                   |                            |org
          Component|other                       |tree-optimization
   GCC host triplet|x86_64-unknown-linux-gnu    |
 GCC target triplet|                            |i?86-*-*
           Keywords|                            |missed-optimization


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42375

Reply via email to