The nice litle program below does not work on 4.0.1 32 bit target code, running on an Opteron. The 64 bit target is OK.
The problem appears on both 3.4.3 and 4.0.1, I did not try other releases. Regards, Lex Augusteijn ---------------------------- #include <stdio.h> typedef enum { FALSE, TRUE } Bool; Bool false (int x) { return FALSE; } void primes (int p, Bool (*filter) (int)) { int q; Bool my_filter (int x) { return x%p ? filter(x) : TRUE; } printf ("%d\n", p); for (q = p+2; my_filter(q); q += 2) {} primes (q, my_filter); } int main (void) { printf ("%d\n", 2); primes (3, false); return 0; } -- Summary: Nested function do not work on 32 bit build Product: gcc Version: 4.0.1 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: lex dot augusteijn at philips dot com CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23226