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: