diff --git a/unix/gccollect.c b/unix/gccollect.c index 792913821f..f24cc52495 100644 --- a/unix/gccollect.c +++ b/unix/gccollect.c @@ -144,15 +144,7 @@ void gc_collect(void) { regs_t regs; gc_helper_get_regs(regs); // GC stack (and regs because we captured them) -#ifdef __MINGW32__ - // The Mingw cross-compiler on Travis complains - // 'warning: dereferencing type-punned pointer will break strict-aliasing rules' - // when casting ®s to void** directly so use a union. - union { regs_t *r; void **ptr; } cast_regs = { ®s }; - void **regs_ptr = cast_regs.ptr; -#else - void **regs_ptr = (void**)®s; -#endif + void **regs_ptr = (void**)(void*)®s; gc_collect_root(regs_ptr, ((machine_uint_t)stack_top - (machine_uint_t)®s) / sizeof(machine_uint_t)); gc_collect_end();