guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug in throw.c


From: David Mosberger-Tang
Subject: bug in throw.c
Date: Sun, 6 Apr 2003 17:01:36 -0700 (PDT)

Hi,

Today I tried to build guile-1.6.3 on ia64 linux but it failed during
the build when trying to use guile to generate some documentation.
Subsequently, I tried the snapshot from April 4th and it had the same
problem.  The problem is quite obvious: in throw.c, we find:

#if 0/*def __GNUC__*/
  /* Dirk:FIXME:: This bugfix should be removed some time. */
  /* GCC 2.95.2 has a bug in its optimizer that makes it generate
     incorrect code sometimes.  This barrier stops it from being too
     clever. */
  asm volatile ("" : "=g" (winds));
#endif

This is clearly bogus: the asm statement claims that it's writing the
"winds" variable, which isn't true.  On ia64, this has the effect that
the "winds" gets corrupted and comes out with value "1".  Just
disabling the workaround fixes the issue.  Perhaps the workaround is
legitimate for some platforms, but I suspect it should always be
disabled for gcc v3.x or newer.

        --david

--- libguile/throw.c~   Thu Mar 14 16:00:40 2002
+++ libguile/throw.c    Sun Apr  6 16:56:58 2003
@@ -622,7 +622,7 @@
        }
     }
 
-#ifdef __GNUC__
+#if 0/*def __GNUC__*/
   /* Dirk:FIXME:: This bugfix should be removed some time. */
   /* GCC 2.95.2 has a bug in its optimizer that makes it generate
      incorrect code sometimes.  This barrier stops it from being too





reply via email to

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