bug-guile
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]