[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Guile fails tests on Tru64 4.0F
From: |
David C Sterratt |
Subject: |
Re: Guile fails tests on Tru64 4.0F |
Date: |
Fri, 15 Feb 2002 14:42:44 +0000 |
>>>>> Thien-Thi Nguyen writes:
> From: David C Sterratt <address@hidden> Date: Mon, 11
> Feb 2002 10:58:25 +0000
> Thanks for you message. Here's what I see when using
> ./check-guile --debug at the end:
> [tests: srfi-19, srfi-4, time]
> looks like two main problem areas: time and uniform vectors.
> the first area is a legendary debugging quagmire (unless you are an
> l10n guru), so i propose we focus on the second area's
> characteristic: all failures involve some kind of memory
> allocation. this is not surprising (although i can't remember why
> ;-)...
> if you look how the fundamental type (SCM) is implemented
> (tags.h:63), there are several cpp symbols that conditionalize it.
> could you summarize those and their values? see top-level
> config.status, and also try "gcc -E" to see what is really being
> passed to the compiler.
Here's the relevant bit of tags.h. From config.status it doesn't look
as if SCM_DEBUG_TYPING_STRICTNESS is defined. This is confirmed by
compiling using make clean; make
CFLAGS=-DSCM_DEBUG_TYPING_STRICTNESS=1 I get a different set of
totals at the end of ./check-guile --debug
passes: 2077
failures: 7
unexpected passes: 0
expected failures: 17
unresolved test cases: 2
untested test cases: 0
unsupported test cases: 9
errors: 30
(There were on unresolved test cases when compiled without defining
SCM_DEBUG_TYPING_STRICTNESS)
#if (SCM_DEBUG_TYPING_STRICTNESS == 2)
typedef union { struct { scm_t_bits n; } n; } SCM;
static SCM scm_pack(scm_t_bits b) { SCM s; s.n.n = b; return s; }
# define SCM_UNPACK(x) ((x).n.n)
# define SCM_PACK(x) (scm_pack ((scm_t_bits) (x)))
#elif (SCM_DEBUG_TYPING_STRICTNESS == 1)
/* This is the default, which provides an intermediate level of compile time
* type checking while still resulting in very efficient code.
*/
typedef struct scm_unused_struct * SCM;
# define SCM_UNPACK(x) ((scm_t_bits) (x))
# define SCM_PACK(x) ((SCM) (x))
#else
/* This should be used as a fall back solution for machines on which casting
* to a pointer may lead to loss of bit information, e. g. in the three least
* significant bits.
*/
typedef scm_t_bits SCM;
# define SCM_UNPACK(x) (x)
# define SCM_PACK(x) ((scm_t_bits) (x))
#endif
Running gcc -E tags.h shows that
typedef scm_t_bits SCM;
is the line included.
Thanks for your help,
David