[kaffe] CVS kaffe (robilad): Fixlet for gcc 2.9x

Kaffe CVS cvs-commits at kaffe.org
Fri Apr 1 13:39:11 PST 2005


PatchSet 5640 
Date: 2005/04/01 21:32:19
Author: robilad
Branch: HEAD
Tag: (none) 
Log:
Fixlet for gcc 2.9x

2005-04-01  gian paolo ciceri <gp.ciceri at acm.org>

* config/katomic.h (__atomic_val_bysize, __atomic_bool_bysize):
Added versions for gcc 2.x variadic macro format.

Members: 
	ChangeLog:1.3810->1.3811 
	config/katomic.h:1.1->1.2 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.3810 kaffe/ChangeLog:1.3811
--- kaffe/ChangeLog:1.3810	Fri Apr  1 20:37:33 2005
+++ kaffe/ChangeLog	Fri Apr  1 21:32:19 2005
@@ -1,3 +1,8 @@
+2005-04-01  gian paolo ciceri <gp.ciceri at acm.org>
+
+	* config/katomic.h (__atomic_val_bysize, __atomic_bool_bysize): 
+	Added versions for gcc 2.x variadic macro format.
+
 2005-04-01  Supreet Sethi  <supreet at linux-delhi.org>
 
 	* configure.ac: Check for uintmax_t and intmax_t.
Index: kaffe/config/katomic.h
diff -u kaffe/config/katomic.h:1.1 kaffe/config/katomic.h:1.2
--- kaffe/config/katomic.h:1.1	Sun Mar 20 20:30:37 2005
+++ kaffe/config/katomic.h	Fri Apr  1 21:32:21 2005
@@ -26,6 +26,43 @@
 /* Wrapper macros to call pre_NN_post (mem, ...) where NN is the
    bit width of *MEM.  The calling macro puts parens around MEM
    and following args.  */
+   
+   
+#if __GNUC__ == 2 
+
+#define __atomic_val_bysize(pre, post, mem, args...)			      \
+  ({									      \
+    __typeof (*mem) __result;						      \
+    if (sizeof (*mem) == 1)						      \
+      __result = pre##_8_##post (mem, args...);			              \
+    else if (sizeof (*mem) == 2)					      \
+      __result = pre##_16_##post (mem, args...);			      \
+    else if (sizeof (*mem) == 4)					      \
+      __result = pre##_32_##post (mem, args...);			      \
+    else if (sizeof (*mem) == 8)					      \
+      __result = pre##_64_##post (mem, args...);			      \
+    else								      \
+      abort ();								      \
+    __result;								      \
+  })
+#define __atomic_bool_bysize(pre, post, mem, args...)			      \
+  ({									      \
+    int __result;							      \
+    if (sizeof (*mem) == 1)						      \
+      __result = pre##_8_##post (mem, args...);			              \
+    else if (sizeof (*mem) == 2)					      \
+      __result = pre##_16_##post (mem, args...);			      \
+    else if (sizeof (*mem) == 4)					      \
+      __result = pre##_32_##post (mem, args...);			      \
+    else if (sizeof (*mem) == 8)					      \
+      __result = pre##_64_##post (mem, args...);			      \
+    else								      \
+      abort ();								      \
+    __result;								      \
+  })
+
+#else
+  
 #define __atomic_val_bysize(pre, post, mem, ...)			      \
   ({									      \
     __typeof (*mem) __result;						      \
@@ -56,7 +93,10 @@
       abort ();								      \
     __result;								      \
   })
-
+  
+  
+#endif
+  
 
 /* Atomically store NEWVAL in *MEM if *MEM is equal to OLDVAL.
    Return the old *MEM value.  */




More information about the kaffe mailing list