[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#635214: gcc-4.6: [sparc] miscompile PARI/GP 2.5.0 [test-case provided]



Hello GCC maintainers,

Please find a smaller test-case.

smetana% gcc -O3 -Wall -g test.c -o test
smetana% ./test
zsh: segmentation fault  ./test
smetana% gcc -O3 -Wall -g test.c -o test -fno-inline
smetana% ./test
smetana%

Cheers,
-- 
Bill. <ballombe@debian.org>

Imagine a large red swirl here. 
#include <stdlib.h>

inline void*
pari_realloc(void *pointer, size_t size)
{
  if (!pointer) return malloc(size);
  else return realloc(pointer,size);
}

typedef struct {
  long offset;
  size_t size;
} pari_stack;

inline void
stack_init(pari_stack *s, size_t size, void **data)
{
  s->offset = (char *)data-(char *)s;
  *data = NULL;
  s->size = size;
}

inline void
stack_alloc(pari_stack *s)
{
  void **sdat = (void **) ((char *)s+s->offset);
  *sdat = pari_realloc(*sdat,s->size);
}

static void ** MODULES;
static pari_stack s_MODULES;

void
pari_init_functions(void)
{
  stack_init(&s_MODULES, sizeof(*MODULES),(void**)&MODULES);
  stack_alloc(&s_MODULES); MODULES[0]=NULL;
}

int main(void)
{
  pari_init_functions();
  return 0;
}

Reply to: