make WMB / MB safer on x86-64
authorArjan van de Ven <arjan@linux.intel.com>
Sun, 17 Jun 2018 18:06:24 +0000 (18:06 +0000)
committerArjan van de Ven <arjan@linux.intel.com>
Sun, 17 Jun 2018 18:06:24 +0000 (18:06 +0000)
make it so that

if (foo)
RMB;
else
MB;

is always done correctly and without syntax surprises

common_x86_64.h

index 3236778..62e138e 100644 (file)
 */
 
 #ifdef __GNUC__
-#define MB __asm__ __volatile__("": : :"memory")
-#define WMB __asm__ __volatile__("": : :"memory")
+#define MB do { __asm__ __volatile__("": : :"memory"); } while (0)
+#define WMB do { __asm__ __volatile__("": : :"memory"); } while (0)
 #else
-#define MB
-#define WMB
+#define MB do {} while (0)
+#define WMB do {} while (0)
 #endif
 
 static void __inline blas_lock(volatile BLASULONG *address){