From 88cefbc7de86e0061b0cc4fb5417de78f7afba15 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 10 Oct 2008 10:00:21 +0200 Subject: [PATCH] Fix compilation error due to strict aliasing rules on `i386-unknown-freebsd7.0'. * libguile/threads.c (scm_threads_mark_stacks): Cast `&t->regs' to `(void *)' rather than `(SCM_STACKITEM *)' to avoid "warning: dereferencing type-punned pointer will break strict-aliasing rules" with GCC 4.2.1 on `i386-unknown-freebsd7.0'. --- NEWS | 1 + libguile/threads.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 567fc1b86..02acd6e31 100644 --- a/NEWS +++ b/NEWS @@ -73,6 +73,7 @@ available: Guile is now always configured in "maintainer mode". ** Fix build issue on Tru64 and ia64-hp-hpux11.23 (`SCM_UNPACK' macro) ** Fix build issue on mips, mipsel, powerpc and ia64 (stack direction) ** Fix build issue on hppa2.0w-hp-hpux11.11 (`dirent64' and `readdir64_r') +** Fix build issue on i386-unknown-freebsd7.0 ("break strict-aliasing rules") ** Fix misleading output from `(help rationalize)' ** Fix build failure on Debian hppa architecture (bad stack growth detection) ** Fix `gcd' when called with a single, negative argument. diff --git a/libguile/threads.c b/libguile/threads.c index 72af3d17f..3c1d0b5b6 100644 --- a/libguile/threads.c +++ b/libguile/threads.c @@ -1715,7 +1715,7 @@ scm_threads_mark_stacks (void) #else scm_mark_locations (t->top, t->base - t->top); #endif - scm_mark_locations ((SCM_STACKITEM *) &t->regs, + scm_mark_locations ((void *) &t->regs, ((size_t) sizeof(t->regs) / sizeof (SCM_STACKITEM))); } -- 2.20.1