volatile ptr_t arg)
{
volatile int dummy;
- void * volatile context = 0;
+ volatile ptr_t context = 0;
# if defined(HAVE_PUSH_REGS)
GC_push_regs();
/* getcontext() is broken, do not try again. */
/* E.g., to workaround a bug in Docker ubuntu_32bit. */
} else {
- context = &ctxt;
+ context = (ptr_t)&ctxt;
}
if (EXPECT(0 == getcontext_works, FALSE))
getcontext_works = context != NULL ? 1 : -1;
# endif /* !HAVE_PUSH_REGS */
/* TODO: context here is sometimes just zero. At the moment, the */
/* callees don't really need it. */
- fn(arg, context);
+ fn(arg, (/* no volatile */ void *)context);
/* Strongly discourage the compiler from treating the above */
/* as a tail-call, since that would pop the register */
/* contents before we get a chance to look at them. */
word next_page = ((text_end + (word)max_page_size - 1)
& ~((word)max_page_size - 1));
word page_offset = (text_end & ((word)max_page_size - 1));
- char * volatile result = (char *)(next_page + page_offset);
+ volatile ptr_t result = (char *)(next_page + page_offset);
/* Note that this isn't equivalent to just adding */
/* max_page_size to &etext if &etext is at a page boundary */
/* text and data segments, so plan A brought us something. */
result = (char *)GC_find_limit(DATAEND, FALSE);
}
- return((ptr_t)result);
+ return (/* no volatile */ ptr_t)result;
}
# endif