diff --git a/NEWS b/NEWS index 027941a4d..55addf75a 100644 --- a/NEWS +++ b/NEWS @@ -15,7 +15,7 @@ This makes these internal functions technically not callable from application code. ** `guile-config link' now prints `-L$libdir' before `-lguile' -** Fix build issue on Tru64 +** Fix build issue on Tru64 and ia64-hp-hpux11.23 (`SCM_UNPACK' macro) Changes in 1.8.5 (since 1.8.4) diff --git a/libguile/ChangeLog b/libguile/ChangeLog index d14ef9dca..4c731a5b1 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,3 +1,8 @@ +2008-06-28 Ludovic Courtès + + * tags.h (SCM_UNPACK): Disable type-checking for `__DECC' and + `__HP_cc'. Reported by Peter O'Gorman . + 2008-06-02 Ludovic Courtès * deprecated.c (maybe_close_port): Rename EXCEPT to EXCEPT_SET diff --git a/libguile/tags.h b/libguile/tags.h index 3f5483f3c..4e0700b52 100644 --- a/libguile/tags.h +++ b/libguile/tags.h @@ -3,7 +3,7 @@ #ifndef SCM_TAGS_H #define SCM_TAGS_H -/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 +/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2008 * Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or @@ -113,8 +113,14 @@ typedef unsigned long scm_t_bits; and that there is no performance hit. However, the alternative is compiled, and does generate a warning when used with the wrong pointer type. - */ + + The Tru64 and ia64-hp-hpux11.23 compilers fail on `case (0?0=0:x)' + statements, so for them type-checking is disabled. */ +#if defined __DECC || defined __HP_cc +# define SCM_UNPACK(x) ((scm_t_bits) (x)) +#else # define SCM_UNPACK(x) ((scm_t_bits) (0? (*(SCM*)0=(x)): x)) +#endif /* There is no typechecking on SCM_PACK, since all kinds of types