bug-guile
[Top][All Lists]
Advanced

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

FW: problem compiling guile on IA64 by Intel compiler


From: Sysoltsev, Vyatcheslav
Subject: FW: problem compiling guile on IA64 by Intel compiler
Date: Tue, 8 Jul 2003 19:46:20 +0400

I expect some reply to ensure that this is not dummy mailbox.
        --Slava

-----Original Message-----
From: Sysoltsev, Vyatcheslav 
Sent: Tuesday, June 24, 2003 4:45 PM
To: 'address@hidden'
Cc: Denis Briltz (E-mail)
Subject: problem compiling guile on IA64 by Intel compiler


Hi there!
Because Intel compiler doesn't support asm inlines on IA64 I cannot compile
guile from sources on IA64 due to SCM_FENCE macro from libguile/__scm.h.
Here is this macro:
/* Anthony Green writes:
   When the compiler sees...
           DEFER_INTS;
           [critical code here]
           ALLOW_INTS;
   ...it doesn't actually promise to keep the critical code within the
   boundries of the DEFER/ALLOW_INTS instructions. It may very well
   schedule it outside of the magic defined in those macros.

   However, GCC's volatile asm feature forms a barrier over which code is
   never moved. So if you add...
           asm ("");
   ...to each of the DEFER_INTS and ALLOW_INTS macros, the critical
   code will always remain in place.  asm's without inputs or outputs
   are implicitly volatile. */
#ifdef __GNUC__
#define SCM_FENCE asm /* volatile */ ("")
#else
#define SCM_FENCE
#endif

So I'd change the condition
#ifdef __GNUC__
... to ...
#if defined(__GNUC__) && !(defined(__INTEL_COMPILER) && defined(__ia64))

In this case the code will be acceptable both with gcc and Intel compiler.
However as I understand from the comment defining SCM_FENCE to nothing is
dangerous because of the compiler optimization. If you've got a real problem
with it, let me know and I will cope with this further.
                -- Slava Sysoltsev

----------------------------------------------------------------------------
----------------------
--- libguile/__scm.h.orig       2003-06-24 16:33:40.000000000 +0400
+++ libguile/__scm.h    2003-06-24 16:34:35.000000000 +0400
@@ -362,7 +362,7 @@
    ...to each of the DEFER_INTS and ALLOW_INTS macros, the critical
    code will always remain in place.  asm's without inputs or outputs
    are implicitly volatile. */
-#ifdef __GNUC__
+#if defined(__GNUC__) && !(defined(__INTEL_COMPILER) && defined(__ia64))
 #define SCM_FENCE asm /* volatile */ ("")
 #else
 #define SCM_FENCE




reply via email to

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