Index: cvm.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/cvm.c,v
retrieving revision 1.55
diff -u -r1.55 cvm.c
--- cvm.c	18 Oct 2005 19:00:57 -0000	1.55
+++ cvm.c	16 Nov 2005 05:18:23 -0000
@@ -94,9 +94,11 @@
 	#define	IL_MEMSET(dst,ch,len)			(ILMemSet((dst), (ch), (len)))
 	#define	IL_MEMCMP(dst,src,len)			(ILMemCmp((dst), (src), (len)))
 
-	#define X86_64_CGOTO(pc) __asm__ __volatile__ (\
+	#define X86_64_CGOTO(pc) do { __asm__ __volatile__ (\
 								"jmpq *(%0)" \
-								:: "r" (pc) )
+								:: "r" (pc) ); \
+								/* just to fool the compiler */ \
+								goto ** ((void **)(pc)); } while(0)
 	/* VM_CGOTO_SWITCH segfaults with just a jmpq */
 	#define VM_CGOTO_PREFIXSWITCH(val) X86_64_CGOTO(pc)
 	#define VM_CGOTO_BREAK(val) X86_64_CGOTO(pc)
