Please really check that reverting only the change in `lily/simple-spacer.cc` 
is sufficient for removing the problem.  Because if it is, we have a far larger 
problem either involving a fundamental Guile bug or a GCC compiler bug: the 
change in `simple-spacer.cc` is just

    diff --git a/lily/simple-spacer.cc b/lily/simple-spacer.cc
    index d17fa1e..ada1659 100644
    --- a/lily/simple-spacer.cc
    +++ b/lily/simple-spacer.cc
    @@ -528,7 +528,7 @@ get_line_configuration (vector<Grob *> const &columns,
       for (vsize i = 1; i + 1 < ret.cols_.size (); i++)
         {
             SCM p = ret.cols_[i]->get_property ("line-break-permission");
    -      if (p == ly_symbol2scm ("force"))
    +      if (scm_is_eq (p, ly_symbol2scm ("force")))
             ret.satisfies_constraints_ = false;
         }

And the respective definitions in Guile 1.8 are:
    #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;

    /*
      The 0?: constructions makes sure that the code is never executed,
      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

followed by

    #define scm_is_eq(x, y) (SCM_UNPACK (x) == SCM_UNPACK (y))

and also

    /* For dealing with the bit level representation of scheme objects we define
     * scm_t_bits:
     */
    /* On Solaris 7 and 8, /usr/include/sys/int_limits.h defines
       INTPTR_MAX and UINTPTR_MAX to empty, INTPTR_MIN is not defined.
       To avoid uintptr_t and intptr_t in this case we require
       UINTPTR_MAX-0 != 0 etc.  */
    #if SCM_SIZEOF_INTPTR_T != 0 && defined(INTPTR_MAX) && defined(INTPTR_MIN) \
      && INTPTR_MAX-0 != 0 && INTPTR_MIN-0 != 0 \
      && SCM_SIZEOF_UINTPTR_T != 0 && defined(UINTPTR_MAX) && UINTPTR_MAX-0 != 0
    
    typedef intptr_t scm_t_signed_bits;
    #define SCM_T_SIGNED_BITS_MAX INTPTR_MAX
    #define SCM_T_SIGNED_BITS_MIN INTPTR_MIN
    typedef uintptr_t scm_t_bits;
    #define SIZEOF_SCM_T_BITS SCM_SIZEOF_UINTPTR_T
    #define SCM_T_BITS_MAX UINTPTR_MAX

    #else

    typedef signed long scm_t_signed_bits;
    #define SCM_T_SIGNED_BITS_MAX LONG_MAX
    #define SCM_T_SIGNED_BITS_MIN LONG_MIN
    typedef unsigned long scm_t_bits;
    #define SIZEOF_SCM_T_BITS SCM_SIZEOF_UNSIGNED_LONG
    #define SCM_T_BITS_MAX ULONG_MAX

    #endif

Either scm_t_bits is defined as an unsigned long (of length 32 bit) unable to 
actually hold a pointer value, in which case Guile will be broken.  Or we have 
a compiler error during code generation.  Either will affect a lot more code 
than just this.

So we better make quite sure that this change is responsible.  And if it is, 
I'll need to look at the output of autoconf on the cross compilation of Guile, 
and then I'll likely need to check the generated assembly code.


---

** [issues:#4975] [Windows] Grace notes cause staff to protrude into the 
margin**

**Status:** Started
**Created:** Sun Sep 18, 2016 11:07 PM UTC by Simon Albrecht
**Last Updated:** Wed Sep 28, 2016 09:07 AM UTC
**Owner:** Phil Holmes


http://lilypond.1069038.n5.nabble.com/Grace-notes-and-staff-miss-alignment-tp181529p188186.html
As reported by Karol and confirmed by Pierre, this code

~~~~
:::TeX
\version "2.19.48"

\transpose c c' {
  \repeat unfold 16 { e'8 a }
  R1*8
}

\transpose c c' {
  \repeat unfold 16 { \grace dis'8 e' \grace gis8 a }
  R1*8
} 
~~~~

under Windows (at least 7 and 8) causes lots of `programming error: 
mis-predicted force` and has the last staff flow into the margin.
Output at <http://lilypond.1069038.n5.nabble.com/file/n188186/ttttttt.pdf>

The first bad version is 2.19.19.


---

Sent from sourceforge.net because testlilyissues-a...@lists.sourceforge.net is 
subscribed to https://sourceforge.net/p/testlilyissues/issues/

To unsubscribe from further messages, a project admin can change settings at 
https://sourceforge.net/p/testlilyissues/admin/issues/options.  Or, if this is 
a mailing list, you can unsubscribe from the mailing list.
------------------------------------------------------------------------------
_______________________________________________
Testlilyissues-auto mailing list
testlilyissues-a...@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/testlilyissues-auto

Reply via email to