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

Reply via email to