[project @ 2003-07-31 10:07:02 by simonmar]
[ghc-hetmet.git] / ghc / includes / TailCalls.h
index 2d3f36c..1f562eb 100644 (file)
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------------
- * $Id: TailCalls.h,v 1.10 2002/06/03 13:08:41 matthewc Exp $
+ * $Id: TailCalls.h,v 1.12 2003/01/06 13:11:26 simonmar Exp $
  *
  * (c) The GHC Team, 1998-1999
  *
@@ -51,10 +51,10 @@ extern void __DISCARD__(void);
 
 #define JMP_(cont)                     \
     {                                  \
-      void *target;                    \
+      void *__target;                  \
       __DISCARD__();                   \
-      target = (void *)(cont);         \
-      goto *target;                    \
+      __target = (void *)(cont);       \
+      goto *__target;                  \
     }
 
 #endif /* i386_TARGET_ARCH */
@@ -85,9 +85,10 @@ extern void __DISCARD__(void);
 
 register void *_procedure __asm__("$27");
 
-#define JMP_(cont)                             \
-    do { _procedure = (void *)(cont);          \
-         goto *_procedure;                     \
+#define JMP_(cont)                             \
+    do { _procedure = (void *)(cont);          \
+         __DISCARD__();                                \
+         goto *_procedure;                     \
        } while(0)
 
 /* Don't need these for alpha mangling */