# include <hal/libhal.h>
#endif
+#if defined(__GNUC__)
+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 0)
+#define USE_SYNC
+#endif
+#endif
+
#include <vlc_playlist.h>
#include <vlc_interface.h>
p_gc->pf_destructor = pf_destruct;
p_gc->refs = 1;
-#ifdef __GNUC__
+#ifdef USE_SYNC
__sync_synchronize ();
#else
/* Nobody else can possibly lock the spin - it's there as a barrier */
uintptr_t refs;
assert( p_gc );
-#ifdef __GNUC__
+#ifdef USE_SYNC
refs = __sync_fetch_and_add (&p_gc->refs, 1);
#else
vlc_spin_lock (&p_gc->spin);
assert( p_gc );
-#ifdef __GNUC__
+#ifdef USE_SYNC
refs = __sync_fetch_and_sub (&p_gc->refs, 1);
#else
vlc_spin_lock (&p_gc->spin);