#if defined FN
-/* Define macros for each __sync_* function type. Each macro defines a
- local function called <NAME>_<UNITS> that acts like __<NAME>_<UNITS>.
- TYPE is a type that has UNITS bytes. */
+/* Define functions called __sync_<NAME>_<UNITS>, with one macro per
+ signature. TYPE is a type that has UNITS bytes. */
#define DEFINE_V_PV(NAME, UNITS, TYPE) \
- static TYPE \
- NAME##_##UNITS (TYPE *ptr, TYPE value) \
+ TYPE \
+ __##NAME##_##UNITS (TYPE *ptr, TYPE value) \
{ \
return __##NAME (ptr, value); \
}
-#define DEFINE_V_PVV(NAME, UNITS, TYPE) \
- static TYPE \
- NAME##_##UNITS (TYPE *ptr, TYPE value1, TYPE value2) \
+#define DEFINE_V_PVV(NAME, UNITS, TYPE) \
+ TYPE \
+ __##NAME##_##UNITS (TYPE *ptr, TYPE value1, TYPE value2) \
{ \
return __##NAME (ptr, value1, value2); \
}
#define DEFINE_BOOL_PVV(NAME, UNITS, TYPE) \
- static _Bool \
- NAME##_##UNITS (TYPE *ptr, TYPE value1, TYPE value2) \
+ _Bool \
+ __##NAME##_##UNITS (TYPE *ptr, TYPE value1, TYPE value2) \
{ \
return __##NAME (ptr, value1, value2); \
}
#define DEFINE1(NAME, UNITS, TYPE) \
static int unused[sizeof (TYPE) == UNITS ? 1 : -1] \
__attribute__((unused)); \
- local_##NAME (NAME, UNITS, TYPE); \
- typeof (NAME##_##UNITS) __##NAME##_##UNITS \
- __attribute__((alias (#NAME "_" #UNITS)));
+ local_##NAME (NAME, UNITS, TYPE);
/* As above, but performing macro expansion on the arguments. */
#define DEFINE(NAME, UNITS, TYPE) DEFINE1 (NAME, UNITS, TYPE)
#if defined Lsync_synchronize
-static void
-sync_synchronize (void)
+void
+__sync_synchronize (void)
{
__sync_synchronize ();
}
-typeof (sync_synchronize) __sync_synchronize \
- __attribute__((alias ("sync_synchronize")));
#endif