------- 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