Fix compilation error due to strict aliasing rules on `i386-unknown-freebsd7.0'.
authorLudovic Courtès <ludo@gnu.org>
Fri, 10 Oct 2008 08:00:21 +0000 (10:00 +0200)
committerLudovic Courtès <ludo@gnu.org>
Fri, 10 Oct 2008 08:00:57 +0000 (10:00 +0200)
* 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
libguile/threads.c

diff --git a/NEWS b/NEWS
index 567fc1b..02acd6e 100644 (file)
--- 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.
index 72af3d1..3c1d0b5 100644 (file)
@@ -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)));
     }