mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-23 02:44:18 +08:00
Libatomic: Define per-file identifier macros
In order to facilitate the fine-tuning of how `libatomic_i.h' and `host-config.h' headers are used by different atomic functions, we define distinct identifier macros for each file which, in implementing atomic operations, imports these headers. The idea is that different parts of these headers could then be conditionally defined depending on the macros set by the file that `#include'd them. Given how it is possible that some file names are generic enough that using them as-is for macro names (e.g. flag.c -> FLAG) may potentially lead to name clashes with other macros, all file names first have LAT_ prepended to them such that, for example, flag.c is assigned the LAT_FLAG macro. Libatomic/ChangeLog: * cas_n.c (LAT_CAS_N): New. * exch_n.c (LAT_EXCH_N): Likewise. * fadd_n.c (LAT_FADD_N): Likewise. * fand_n.c (LAT_FAND_N): Likewise. * fence.c (LAT_FENCE): Likewise. * fenv.c (LAT_FENV): Likewise. * fior_n.c (LAT_FIOR_N): Likewise. * flag.c (LAT_FLAG): Likewise. * fnand_n.c (LAT_FNAND_N): Likewise. * fop_n.c (LAT_FOP_N): Likewise * fsub_n.c (LAT_FSUB_N): Likewise. * fxor_n.c (LAT_FXOR_N): Likewise. * gcas.c (LAT_GCAS): Likewise. * gexch.c (LAT_GEXCH): Likewise. * glfree.c (LAT_GLFREE): Likewise. * gload.c (LAT_GLOAD): Likewise. * gstore.c (LAT_GSTORE): Likewise. * load_n.c (LAT_LOAD_N): Likewise. * store_n.c (LAT_STORE_N): Likewise. * tas_n.c (LAT_TAS_N): Likewise.
This commit is contained in:
parent
f6b9a064a2
commit
6edf6fe75b
@ -22,6 +22,7 @@
|
||||
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define LAT_CAS_N
|
||||
#include "libatomic_i.h"
|
||||
|
||||
|
||||
@ -122,3 +123,4 @@ SIZE(libat_compare_exchange) (UTYPE *mptr, UTYPE *eptr, UTYPE newval,
|
||||
#endif
|
||||
|
||||
EXPORT_ALIAS (SIZE(compare_exchange));
|
||||
#undef LAT_CAS_N
|
||||
|
@ -22,6 +22,7 @@
|
||||
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define LAT_EXCH_N
|
||||
#include "libatomic_i.h"
|
||||
|
||||
|
||||
@ -126,3 +127,4 @@ SIZE(libat_exchange) (UTYPE *mptr, UTYPE newval, int smodel UNUSED)
|
||||
#endif
|
||||
|
||||
EXPORT_ALIAS (SIZE(exchange));
|
||||
#undef LAT_EXCH_N
|
||||
|
@ -22,6 +22,7 @@
|
||||
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define LAT_FADD_N
|
||||
#include <libatomic_i.h>
|
||||
|
||||
#define NAME add
|
||||
@ -43,3 +44,4 @@
|
||||
#endif
|
||||
|
||||
#include "fop_n.c"
|
||||
#undef LAT_FADD_N
|
||||
|
@ -1,3 +1,5 @@
|
||||
#define LAT_FAND_N
|
||||
#define NAME and
|
||||
#define OP(X,Y) ((X) & (Y))
|
||||
#include "fop_n.c"
|
||||
#undef LAT_FAND_N
|
||||
|
@ -21,6 +21,7 @@
|
||||
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define LAT_FENCE
|
||||
#include "libatomic_i.h"
|
||||
|
||||
#include <stdatomic.h>
|
||||
@ -43,3 +44,4 @@ void
|
||||
{
|
||||
atomic_signal_fence (order);
|
||||
}
|
||||
#undef LAT_FENCE
|
||||
|
@ -21,6 +21,7 @@
|
||||
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define LAT_FENV
|
||||
#include "libatomic_i.h"
|
||||
|
||||
#ifdef HAVE_FENV_H
|
||||
@ -70,3 +71,4 @@ __atomic_feraiseexcept (int excepts __attribute__ ((unused)))
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#undef LAT_FENV
|
||||
|
@ -1,3 +1,5 @@
|
||||
#define LAT_FIOR_N
|
||||
#define NAME or
|
||||
#define OP(X,Y) ((X) | (Y))
|
||||
#include "fop_n.c"
|
||||
#undef LAT_FIOR_N
|
||||
|
@ -21,6 +21,7 @@
|
||||
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define LAT_FLAG
|
||||
#include "libatomic_i.h"
|
||||
|
||||
#include <stdatomic.h>
|
||||
@ -62,3 +63,4 @@ void
|
||||
{
|
||||
return atomic_flag_clear_explicit (object, order);
|
||||
}
|
||||
#undef LAT_FLAG
|
||||
|
@ -1,3 +1,5 @@
|
||||
#define LAT_FNAND_N
|
||||
#define NAME nand
|
||||
#define OP(X,Y) ~((X) & (Y))
|
||||
#include "fop_n.c"
|
||||
#undef LAT_FNAND_N
|
||||
|
@ -22,6 +22,7 @@
|
||||
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define LAT_FOP_N
|
||||
#include <libatomic_i.h>
|
||||
|
||||
|
||||
@ -198,3 +199,4 @@ SIZE(C3(libat_,NAME,_fetch)) (UTYPE *mptr, UTYPE opval, int smodel UNUSED)
|
||||
|
||||
EXPORT_ALIAS (SIZE(C2(fetch_,NAME)));
|
||||
EXPORT_ALIAS (SIZE(C2(NAME,_fetch)));
|
||||
#undef LAT_FOP_N
|
||||
|
@ -1,3 +1,5 @@
|
||||
#define LAT_FSUB_N
|
||||
#define NAME sub
|
||||
#define OP(X,Y) ((X) - (Y))
|
||||
#include "fop_n.c"
|
||||
#undef LAT_FSUB_N
|
||||
|
@ -1,3 +1,5 @@
|
||||
#define LAT_FXOR_N
|
||||
#define NAME xor
|
||||
#define OP(X,Y) ((X) ^ (Y))
|
||||
#include "fop_n.c"
|
||||
#undef LAT_FXOR_N
|
||||
|
@ -22,6 +22,7 @@
|
||||
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define LAT_GCAS
|
||||
#include "libatomic_i.h"
|
||||
|
||||
|
||||
@ -118,3 +119,4 @@ libat_compare_exchange (size_t n, void *mptr, void *eptr, void *dptr,
|
||||
}
|
||||
|
||||
EXPORT_ALIAS (compare_exchange);
|
||||
#undef LAT_GCAS
|
||||
|
@ -22,6 +22,7 @@
|
||||
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define LAT_GEXCH
|
||||
#include "libatomic_i.h"
|
||||
|
||||
|
||||
@ -142,3 +143,4 @@ libat_exchange (size_t n, void *mptr, void *vptr, void *rptr, int smodel)
|
||||
}
|
||||
|
||||
EXPORT_ALIAS (exchange);
|
||||
#undef LAT_GEXCH
|
||||
|
@ -22,6 +22,7 @@
|
||||
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define LAT_GLFREE
|
||||
#include "libatomic_i.h"
|
||||
|
||||
/* Accesses with a power-of-two size are not lock-free if we don't have an
|
||||
@ -80,3 +81,4 @@ libat_is_lock_free (size_t n, void *ptr)
|
||||
}
|
||||
|
||||
EXPORT_ALIAS (is_lock_free);
|
||||
#undef LAT_GLFREE
|
||||
|
@ -22,6 +22,7 @@
|
||||
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define LAT_GLOAD
|
||||
#include "libatomic_i.h"
|
||||
|
||||
|
||||
@ -98,3 +99,4 @@ libat_load (size_t n, void *mptr, void *rptr, int smodel)
|
||||
}
|
||||
|
||||
EXPORT_ALIAS (load);
|
||||
#undef LAT_GLOAD
|
||||
|
@ -22,6 +22,7 @@
|
||||
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define LAT_GSTORE
|
||||
#include "libatomic_i.h"
|
||||
|
||||
|
||||
@ -106,3 +107,4 @@ libat_store (size_t n, void *mptr, void *vptr, int smodel)
|
||||
}
|
||||
|
||||
EXPORT_ALIAS (store);
|
||||
#undef LAT_GSTORE
|
||||
|
@ -22,6 +22,7 @@
|
||||
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define LAT_LOAD_N
|
||||
#include "libatomic_i.h"
|
||||
|
||||
|
||||
@ -113,3 +114,4 @@ SIZE(libat_load) (UTYPE *mptr, int smodel)
|
||||
#endif
|
||||
|
||||
EXPORT_ALIAS (SIZE(load));
|
||||
#undef LAT_LOAD_N
|
||||
|
@ -22,6 +22,7 @@
|
||||
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define LAT_STORE_N
|
||||
#include "libatomic_i.h"
|
||||
|
||||
|
||||
@ -110,3 +111,4 @@ SIZE(libat_store) (UTYPE *mptr, UTYPE newval, int smodel)
|
||||
#endif
|
||||
|
||||
EXPORT_ALIAS (SIZE(store));
|
||||
#undef LAT_STORE_N
|
||||
|
@ -22,6 +22,7 @@
|
||||
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define LAT_TAS_N
|
||||
#include "libatomic_i.h"
|
||||
|
||||
|
||||
@ -113,3 +114,4 @@ SIZE(libat_test_and_set) (UTYPE *mptr, int smodel UNUSED)
|
||||
#endif
|
||||
|
||||
EXPORT_ALIAS (SIZE(test_and_set));
|
||||
#undef LAT_TAS_N
|
||||
|
Loading…
Reference in New Issue
Block a user