[FFmpeg-devel] [PATCH 1/2] compat: drop gcc, suncc, and pthreads stdatomic emulation

Anton Khirnov anton at khirnov.net
Mon Sep 9 17:51:15 EEST 2024


Since we now require a C11-compliant compiler, there should be no
supported configurations where any of these is used.
---
 compat/atomics/gcc/stdatomic.h     | 173 -------------------------
 compat/atomics/pthread/stdatomic.c |  39 ------
 compat/atomics/pthread/stdatomic.h | 197 -----------------------------
 compat/atomics/suncc/stdatomic.h   | 186 ---------------------------
 configure                          |  19 +--
 5 files changed, 1 insertion(+), 613 deletions(-)
 delete mode 100644 compat/atomics/gcc/stdatomic.h
 delete mode 100644 compat/atomics/pthread/stdatomic.c
 delete mode 100644 compat/atomics/pthread/stdatomic.h
 delete mode 100644 compat/atomics/suncc/stdatomic.h

diff --git a/compat/atomics/gcc/stdatomic.h b/compat/atomics/gcc/stdatomic.h
deleted file mode 100644
index e13ed0e068..0000000000
--- a/compat/atomics/gcc/stdatomic.h
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * FFmpeg is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-/*
- * based on vlc_atomic.h from VLC
- * Copyright (C) 2010 Rémi Denis-Courmont
- */
-
-#ifndef COMPAT_ATOMICS_GCC_STDATOMIC_H
-#define COMPAT_ATOMICS_GCC_STDATOMIC_H
-
-#include <stddef.h>
-#include <stdint.h>
-
-#define ATOMIC_FLAG_INIT 0
-
-#define ATOMIC_VAR_INIT(value) (value)
-
-#define atomic_init(obj, value) \
-do {                            \
-    *(obj) = (value);           \
-} while(0)
-
-#define kill_dependency(y) ((void)0)
-
-#define atomic_thread_fence(order) \
-    __sync_synchronize()
-
-#define atomic_signal_fence(order) \
-    ((void)0)
-
-#define atomic_is_lock_free(obj) 0
-
-typedef         _Bool      atomic_flag;
-typedef         _Bool      atomic_bool;
-typedef          char      atomic_char;
-typedef   signed char      atomic_schar;
-typedef unsigned char      atomic_uchar;
-typedef          short     atomic_short;
-typedef unsigned short     atomic_ushort;
-typedef          int       atomic_int;
-typedef unsigned int       atomic_uint;
-typedef          long      atomic_long;
-typedef unsigned long      atomic_ulong;
-typedef          long long atomic_llong;
-typedef unsigned long long atomic_ullong;
-typedef          wchar_t   atomic_wchar_t;
-typedef       int_least8_t atomic_int_least8_t;
-typedef      uint_least8_t atomic_uint_least8_t;
-typedef      int_least16_t atomic_int_least16_t;
-typedef     uint_least16_t atomic_uint_least16_t;
-typedef      int_least32_t atomic_int_least32_t;
-typedef     uint_least32_t atomic_uint_least32_t;
-typedef      int_least64_t atomic_int_least64_t;
-typedef     uint_least64_t atomic_uint_least64_t;
-typedef       int_fast8_t atomic_int_fast8_t;
-typedef      uint_fast8_t atomic_uint_fast8_t;
-typedef      int_fast16_t atomic_int_fast16_t;
-typedef     uint_fast16_t atomic_uint_fast16_t;
-typedef      int_fast32_t atomic_int_fast32_t;
-typedef     uint_fast32_t atomic_uint_fast32_t;
-typedef      int_fast64_t atomic_int_fast64_t;
-typedef     uint_fast64_t atomic_uint_fast64_t;
-typedef          intptr_t atomic_intptr_t;
-typedef         uintptr_t atomic_uintptr_t;
-typedef            size_t atomic_size_t;
-typedef         ptrdiff_t atomic_ptrdiff_t;
-typedef          intmax_t atomic_intmax_t;
-typedef         uintmax_t atomic_uintmax_t;
-
-#define atomic_store(object, desired)   \
-do {                                    \
-    *(object) = (desired);              \
-    __sync_synchronize();               \
-} while (0)
-
-#define atomic_store_explicit(object, desired, order) \
-    atomic_store(object, desired)
-
-#define atomic_load(object) \
-    (__sync_synchronize(), *(object))
-
-#define atomic_load_explicit(object, order) \
-    atomic_load(object)
-
-#define atomic_exchange(object, desired)                            \
-({                                                                  \
-    __typeof__(object) _obj = (object);                             \
-    __typeof__(*object) _old;                                       \
-    do                                                              \
-        _old = atomic_load(_obj);                                   \
-    while (!__sync_bool_compare_and_swap(_obj, _old, (desired)));   \
-    _old;                                                           \
-})
-
-#define atomic_exchange_explicit(object, desired, order) \
-    atomic_exchange(object, desired)
-
-#define atomic_compare_exchange_strong(object, expected, desired)   \
-({                                                                  \
-    __typeof__(object) _exp = (expected);                           \
-    __typeof__(*object) _old = *_exp;                               \
-    *_exp = __sync_val_compare_and_swap((object), _old, (desired)); \
-    *_exp == _old;                                                  \
-})
-
-#define atomic_compare_exchange_strong_explicit(object, expected, desired, success, failure) \
-    atomic_compare_exchange_strong(object, expected, desired)
-
-#define atomic_compare_exchange_weak(object, expected, desired) \
-    atomic_compare_exchange_strong(object, expected, desired)
-
-#define atomic_compare_exchange_weak_explicit(object, expected, desired, success, failure) \
-    atomic_compare_exchange_weak(object, expected, desired)
-
-#define atomic_fetch_add(object, operand) \
-    __sync_fetch_and_add(object, operand)
-
-#define atomic_fetch_add_explicit(object, operand, order) \
-    atomic_fetch_add(object, operand)
-
-#define atomic_fetch_sub(object, operand) \
-    __sync_fetch_and_sub(object, operand)
-
-#define atomic_fetch_sub_explicit(object, operand, order) \
-    atomic_fetch_sub(object, operand)
-
-#define atomic_fetch_or(object, operand) \
-    __sync_fetch_and_or(object, operand)
-
-#define atomic_fetch_or_explicit(object, operand, order) \
-    atomic_fetch_or(object, operand)
-
-#define atomic_fetch_xor(object, operand) \
-    __sync_fetch_and_xor(object, operand)
-
-#define atomic_fetch_xor_explicit(object, operand, order) \
-    atomic_fetch_xor(object, operand)
-
-#define atomic_fetch_and(object, operand) \
-    __sync_fetch_and_and(object, operand)
-
-#define atomic_fetch_and_explicit(object, operand, order) \
-    atomic_fetch_and(object, operand)
-
-#define atomic_flag_test_and_set(object) \
-    atomic_exchange(object, 1)
-
-#define atomic_flag_test_and_set_explicit(object, order) \
-    atomic_flag_test_and_set(object)
-
-#define atomic_flag_clear(object) \
-    atomic_store(object, 0)
-
-#define atomic_flag_clear_explicit(object, order) \
-    atomic_flag_clear(object)
-
-#endif /* COMPAT_ATOMICS_GCC_STDATOMIC_H */
diff --git a/compat/atomics/pthread/stdatomic.c b/compat/atomics/pthread/stdatomic.c
deleted file mode 100644
index 9fca98980b..0000000000
--- a/compat/atomics/pthread/stdatomic.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * FFmpeg is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-/*
- * based on vlc_atomic.h from VLC
- * Copyright (C) 2010 Rémi Denis-Courmont
- */
-
-#include <pthread.h>
-#include <stdint.h>
-
-#include "stdatomic.h"
-
-static pthread_mutex_t atomic_lock = PTHREAD_MUTEX_INITIALIZER;
-
-void avpriv_atomic_lock(void)
-{
-    pthread_mutex_lock(&atomic_lock);
-}
-
-void avpriv_atomic_unlock(void)
-{
-    pthread_mutex_unlock(&atomic_lock);
-}
diff --git a/compat/atomics/pthread/stdatomic.h b/compat/atomics/pthread/stdatomic.h
deleted file mode 100644
index 81a60f102b..0000000000
--- a/compat/atomics/pthread/stdatomic.h
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * FFmpeg is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-/*
- * based on vlc_atomic.h from VLC
- * Copyright (C) 2010 Rémi Denis-Courmont
- */
-
-#ifndef COMPAT_ATOMICS_PTHREAD_STDATOMIC_H
-#define COMPAT_ATOMICS_PTHREAD_STDATOMIC_H
-
-#include <stdint.h>
-
-#define ATOMIC_FLAG_INIT 0
-
-#define ATOMIC_VAR_INIT(value) (value)
-
-#define atomic_init(obj, value) \
-do {                            \
-    *(obj) = (value);           \
-} while(0)
-
-#define kill_dependency(y) ((void)0)
-
-#define atomic_signal_fence(order) \
-    ((void)0)
-
-#define atomic_is_lock_free(obj) 0
-
-typedef intptr_t atomic_flag;
-typedef intptr_t atomic_bool;
-typedef intptr_t atomic_char;
-typedef intptr_t atomic_schar;
-typedef intptr_t atomic_uchar;
-typedef intptr_t atomic_short;
-typedef intptr_t atomic_ushort;
-typedef intptr_t atomic_int;
-typedef intptr_t atomic_uint;
-typedef intptr_t atomic_long;
-typedef intptr_t atomic_ulong;
-typedef intptr_t atomic_llong;
-typedef intptr_t atomic_ullong;
-typedef intptr_t atomic_wchar_t;
-typedef intptr_t atomic_int_least8_t;
-typedef intptr_t atomic_uint_least8_t;
-typedef intptr_t atomic_int_least16_t;
-typedef intptr_t atomic_uint_least16_t;
-typedef intptr_t atomic_int_least32_t;
-typedef intptr_t atomic_uint_least32_t;
-typedef intptr_t atomic_int_least64_t;
-typedef intptr_t atomic_uint_least64_t;
-typedef intptr_t atomic_int_fast8_t;
-typedef intptr_t atomic_uint_fast8_t;
-typedef intptr_t atomic_int_fast16_t;
-typedef intptr_t atomic_uint_fast16_t;
-typedef intptr_t atomic_int_fast32_t;
-typedef intptr_t atomic_uint_fast32_t;
-typedef intptr_t atomic_int_fast64_t;
-typedef intptr_t atomic_uint_fast64_t;
-typedef intptr_t atomic_intptr_t;
-typedef intptr_t atomic_uintptr_t;
-typedef intptr_t atomic_size_t;
-typedef intptr_t atomic_ptrdiff_t;
-typedef intptr_t atomic_intmax_t;
-typedef intptr_t atomic_uintmax_t;
-
-void avpriv_atomic_lock(void);
-void avpriv_atomic_unlock(void);
-
-static inline void atomic_thread_fence(int order)
-{
-    avpriv_atomic_lock();
-    avpriv_atomic_unlock();
-}
-
-static inline void atomic_store(intptr_t *object, intptr_t desired)
-{
-    avpriv_atomic_lock();
-    *object = desired;
-    avpriv_atomic_unlock();
-}
-
-#define atomic_store_explicit(object, desired, order) \
-    atomic_store(object, desired)
-
-static inline intptr_t atomic_load(intptr_t *object)
-{
-    intptr_t ret;
-    avpriv_atomic_lock();
-    ret = *object;
-    avpriv_atomic_unlock();
-    return ret;
-}
-
-#define atomic_load_explicit(object, order) \
-    atomic_load(object)
-
-static inline intptr_t atomic_exchange(intptr_t *object, intptr_t desired)
-{
-    intptr_t ret;
-    avpriv_atomic_lock();
-    ret     = *object;
-    *object = desired;
-    avpriv_atomic_unlock();
-    return ret;
-}
-
-#define atomic_exchange_explicit(object, desired, order) \
-    atomic_exchange(object, desired)
-
-static inline int atomic_compare_exchange_strong(intptr_t *object, intptr_t *expected,
-                                                 intptr_t desired)
-{
-    int ret;
-    avpriv_atomic_lock();
-    if (*object == *expected) {
-        ret     = 1;
-        *object = desired;
-    } else {
-        ret = 0;
-        *expected = *object;
-    }
-    avpriv_atomic_unlock();
-    return ret;
-}
-
-#define atomic_compare_exchange_strong_explicit(object, expected, desired, success, failure) \
-    atomic_compare_exchange_strong(object, expected, desired)
-
-#define atomic_compare_exchange_weak(object, expected, desired) \
-    atomic_compare_exchange_strong(object, expected, desired)
-
-#define atomic_compare_exchange_weak_explicit(object, expected, desired, success, failure) \
-    atomic_compare_exchange_weak(object, expected, desired)
-
-#define FETCH_MODIFY(opname, op)                                                   \
-static inline intptr_t atomic_fetch_ ## opname(intptr_t *object, intptr_t operand) \
-{                                                                                  \
-    intptr_t ret;                                                                  \
-    avpriv_atomic_lock();                                                          \
-    ret = *object;                                                                 \
-    *object = *object op operand;                                                  \
-    avpriv_atomic_unlock();                                                        \
-    return ret;                                                                    \
-}
-
-FETCH_MODIFY(add, +)
-FETCH_MODIFY(sub, -)
-FETCH_MODIFY(or,  |)
-FETCH_MODIFY(xor, ^)
-FETCH_MODIFY(and, &)
-
-#undef FETCH_MODIFY
-
-#define atomic_fetch_add_explicit(object, operand, order) \
-    atomic_fetch_add(object, operand)
-
-#define atomic_fetch_sub_explicit(object, operand, order) \
-    atomic_fetch_sub(object, operand)
-
-#define atomic_fetch_or_explicit(object, operand, order) \
-    atomic_fetch_or(object, operand)
-
-#define atomic_fetch_xor_explicit(object, operand, order) \
-    atomic_fetch_xor(object, operand)
-
-#define atomic_fetch_and_explicit(object, operand, order) \
-    atomic_fetch_and(object, operand)
-
-#define atomic_flag_test_and_set(object) \
-    atomic_exchange(object, 1)
-
-#define atomic_flag_test_and_set_explicit(object, order) \
-    atomic_flag_test_and_set(object)
-
-#define atomic_flag_clear(object) \
-    atomic_store(object, 0)
-
-#define atomic_flag_clear_explicit(object, order) \
-    atomic_flag_clear(object)
-
-#endif /* COMPAT_ATOMICS_PTHREAD_STDATOMIC_H */
diff --git a/compat/atomics/suncc/stdatomic.h b/compat/atomics/suncc/stdatomic.h
deleted file mode 100644
index 0cf89e0f78..0000000000
--- a/compat/atomics/suncc/stdatomic.h
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * FFmpeg is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef COMPAT_ATOMICS_SUNCC_STDATOMIC_H
-#define COMPAT_ATOMICS_SUNCC_STDATOMIC_H
-
-#include <atomic.h>
-#include <mbarrier.h>
-#include <stddef.h>
-#include <stdint.h>
-
-#define ATOMIC_FLAG_INIT 0
-
-#define ATOMIC_VAR_INIT(value) (value)
-
-#define atomic_init(obj, value) \
-do {                            \
-    *(obj) = (value);           \
-} while(0)
-
-#define kill_dependency(y) ((void)0)
-
-#define atomic_thread_fence(order) \
-    __machine_rw_barrier();
-
-#define atomic_signal_fence(order) \
-    ((void)0)
-
-#define atomic_is_lock_free(obj) 0
-
-typedef intptr_t atomic_flag;
-typedef intptr_t atomic_bool;
-typedef intptr_t atomic_char;
-typedef intptr_t atomic_schar;
-typedef intptr_t atomic_uchar;
-typedef intptr_t atomic_short;
-typedef intptr_t atomic_ushort;
-typedef intptr_t atomic_int;
-typedef intptr_t atomic_uint;
-typedef intptr_t atomic_long;
-typedef intptr_t atomic_ulong;
-typedef intptr_t atomic_llong;
-typedef intptr_t atomic_ullong;
-typedef intptr_t atomic_wchar_t;
-typedef intptr_t atomic_int_least8_t;
-typedef intptr_t atomic_uint_least8_t;
-typedef intptr_t atomic_int_least16_t;
-typedef intptr_t atomic_uint_least16_t;
-typedef intptr_t atomic_int_least32_t;
-typedef intptr_t atomic_uint_least32_t;
-typedef intptr_t atomic_int_least64_t;
-typedef intptr_t atomic_uint_least64_t;
-typedef intptr_t atomic_int_fast8_t;
-typedef intptr_t atomic_uint_fast8_t;
-typedef intptr_t atomic_int_fast16_t;
-typedef intptr_t atomic_uint_fast16_t;
-typedef intptr_t atomic_int_fast32_t;
-typedef intptr_t atomic_uint_fast32_t;
-typedef intptr_t atomic_int_fast64_t;
-typedef intptr_t atomic_uint_fast64_t;
-typedef intptr_t atomic_intptr_t;
-typedef intptr_t atomic_uintptr_t;
-typedef intptr_t atomic_size_t;
-typedef intptr_t atomic_ptrdiff_t;
-typedef intptr_t atomic_intmax_t;
-typedef intptr_t atomic_uintmax_t;
-
-static inline void atomic_store(intptr_t *object, intptr_t desired)
-{
-    *object = desired;
-    __machine_rw_barrier();
-}
-
-#define atomic_store_explicit(object, desired, order) \
-    atomic_store(object, desired)
-
-static inline intptr_t atomic_load(intptr_t *object)
-{
-    __machine_rw_barrier();
-    return *object;
-}
-
-#define atomic_load_explicit(object, order) \
-    atomic_load(object)
-
-#define atomic_exchange(object, desired) \
-    atomic_swap_ptr(object, desired)
-
-#define atomic_exchange_explicit(object, desired, order) \
-    atomic_exchange(object, desired)
-
-static inline int atomic_compare_exchange_strong(intptr_t *object, intptr_t *expected,
-                                                 intptr_t desired)
-{
-    intptr_t  old = *expected;
-    *expected = (intptr_t)atomic_cas_ptr(object, (void *)old, (void *)desired);
-    return *expected == old;
-}
-
-#define atomic_compare_exchange_strong_explicit(object, expected, desired, success, failure) \
-    atomic_compare_exchange_strong(object, expected, desired)
-
-#define atomic_compare_exchange_weak(object, expected, desired) \
-    atomic_compare_exchange_strong(object, expected, desired)
-
-#define atomic_compare_exchange_weak_explicit(object, expected, desired, success, failure) \
-    atomic_compare_exchange_weak(object, expected, desired)
-
-static inline intptr_t atomic_fetch_add(intptr_t *object, intptr_t operand)
-{
-    return atomic_add_ptr_nv(object, operand) - operand;
-}
-
-#define atomic_fetch_sub(object, operand) \
-    atomic_fetch_add(object, -(operand))
-
-static inline intptr_t atomic_fetch_or(intptr_t *object, intptr_t operand)
-{
-    intptr_t old;
-    do {
-        old = atomic_load(object);
-    } while (!atomic_compare_exchange_strong(object, old, old | operand));
-    return old;
-}
-
-static inline intptr_t atomic_fetch_xor(intptr_t *object, intptr_t operand)
-{
-    intptr_t old;
-    do {
-        old = atomic_load(object);
-    } while (!atomic_compare_exchange_strong(object, old, old ^ operand));
-    return old;
-}
-
-static inline intptr_t atomic_fetch_and(intptr_t *object, intptr_t operand)
-{
-    intptr_t old;
-    do {
-        old = atomic_load(object);
-    } while (!atomic_compare_exchange_strong(object, old, old & operand));
-    return old;
-}
-
-#define atomic_fetch_add_explicit(object, operand, order) \
-    atomic_fetch_add(object, operand)
-
-#define atomic_fetch_sub_explicit(object, operand, order) \
-    atomic_fetch_sub(object, operand)
-
-#define atomic_fetch_or_explicit(object, operand, order) \
-    atomic_fetch_or(object, operand)
-
-#define atomic_fetch_xor_explicit(object, operand, order) \
-    atomic_fetch_xor(object, operand)
-
-#define atomic_fetch_and_explicit(object, operand, order) \
-    atomic_fetch_and(object, operand)
-
-#define atomic_flag_test_and_set(object) \
-    atomic_exchange(object, 1)
-
-#define atomic_flag_test_and_set_explicit(object, order) \
-    atomic_flag_test_and_set(object)
-
-#define atomic_flag_clear(object) \
-    atomic_store(object, 0)
-
-#define atomic_flag_clear_explicit(object, order) \
-    atomic_flag_clear(object)
-
-#endif /* COMPAT_ATOMICS_SUNCC_STDATOMIC_H */
diff --git a/configure b/configure
index a8e67d230c..172f8ce2fe 100755
--- a/configure
+++ b/configure
@@ -2117,8 +2117,6 @@ THREADS_LIST="
 "
 
 ATOMICS_LIST="
-    atomics_gcc
-    atomics_suncc
     atomics_win32
 "
 
@@ -2249,13 +2247,10 @@ ARCH_FEATURES="
 "
 
 BUILTIN_LIST="
-    atomic_cas_ptr
-    machine_rw_barrier
     MemoryBarrier
     mm_empty
     rdtsc
     sem_timedwait
-    sync_val_compare_and_swap
 "
 HAVE_LIST_CMDLINE="
     inline_asm
@@ -2833,8 +2828,6 @@ valgrind_backtrace_conflict="optimizations"
 valgrind_backtrace_deps="valgrind_valgrind_h"
 
 # threading support
-atomics_gcc_if="sync_val_compare_and_swap"
-atomics_suncc_if="atomic_cas_ptr machine_rw_barrier"
 atomics_win32_if="MemoryBarrier"
 atomics_native_if_any="$ATOMICS_LIST"
 w32threads_deps="atomics_native"
@@ -6506,10 +6499,7 @@ if ! disabled network; then
     fi
 fi
 
-check_builtin atomic_cas_ptr atomic.h "void **ptr; void *oldval, *newval; atomic_cas_ptr(ptr, oldval, newval)"
-check_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()"
 check_builtin MemoryBarrier windows.h "MemoryBarrier()"
-check_builtin sync_val_compare_and_swap "" "int *ptr; int oldval, newval; __sync_val_compare_and_swap(ptr, oldval, newval)"
 check_builtin gmtime_r time.h "time_t *time; struct tm *tm; gmtime_r(time, tm)"
 check_builtin localtime_r time.h "time_t *time; struct tm *tm; localtime_r(time, tm)"
 
@@ -7766,15 +7756,8 @@ for thread in $THREADS_LIST; do
 done
 
 if disabled stdatomic; then
-    if enabled atomics_gcc; then
-        add_cppflags '-I\$(SRC_PATH)/compat/atomics/gcc'
-    elif enabled atomics_win32; then
+    if enabled atomics_win32; then
         add_cppflags '-I\$(SRC_PATH)/compat/atomics/win32'
-    elif enabled atomics_suncc; then
-        add_cppflags '-I\$(SRC_PATH)/compat/atomics/suncc'
-    elif enabled pthreads; then
-        add_compat atomics/pthread/stdatomic.o
-        add_cppflags '-I\$(SRC_PATH)/compat/atomics/pthread'
     else
         enabled threads && die "Threading is enabled, but no atomics are available"
         add_cppflags '-I\$(SRC_PATH)/compat/atomics/dummy'
-- 
2.43.0



More information about the ffmpeg-devel mailing list