]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Libatomic: Define per-file identifier macros
authorVictor Do Nascimento <victor.donascimento@arm.com>
Wed, 31 Jan 2024 20:24:45 +0000 (20:24 +0000)
committerVictor Do Nascimento <victor.donascimento@arm.com>
Wed, 12 Jun 2024 09:23:38 +0000 (10:23 +0100)
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.

20 files changed:
libatomic/cas_n.c
libatomic/exch_n.c
libatomic/fadd_n.c
libatomic/fand_n.c
libatomic/fence.c
libatomic/fenv.c
libatomic/fior_n.c
libatomic/flag.c
libatomic/fnand_n.c
libatomic/fop_n.c
libatomic/fsub_n.c
libatomic/fxor_n.c
libatomic/gcas.c
libatomic/gexch.c
libatomic/glfree.c
libatomic/gload.c
libatomic/gstore.c
libatomic/load_n.c
libatomic/store_n.c
libatomic/tas_n.c

index a080b990371bdccbd7328c44e842bcc6a9795d43..2a6357e48db3334b7506e63339572cacb0e1113b 100644 (file)
@@ -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
index e5ff80769b9044e8aa35c0353a49607c848a2f06..184d3de1009ec68189c13c4b604054e1e0f4e128 100644 (file)
@@ -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
index bc15b8bc0e64491ba7f9d3f9f8c9053b557a84f7..32b75cec654f3144e65fa6be86fffbc244c90d66 100644 (file)
@@ -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
index ffe9ed8700fdbe6b4932708d44cd58d9fc01a51b..9eab55bcd72b047fb898e905711ad6206cb09462 100644 (file)
@@ -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
index a9b1e280c5a0209224130b9e9f0dec38cd85670b..4022194a57ad9dc6c2ac50e155f307d1e9f34133 100644 (file)
@@ -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
index 41f187c1f85052ba38e8d7921beb0d988058d2d7..dccad356a31ff301a70f0f41ef1a9affea1445c0 100644 (file)
@@ -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
index 55d0d66b469ffc6cf50c35ac0a64f8a0ee3f6829..2b58d4805d6cdb640ae50cf149c97d957c3db313 100644 (file)
@@ -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
index e4a5a27819a952e6d329b76daa1c06ba0e5643ea..8afd80c91308f32d923254c30619b6065977cb46 100644 (file)
@@ -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
index a3c98c70494802811eb2fed04e1e5e112ce53c18..84a02709cbbb28809d8b8abc2178a41738bfcf77 100644 (file)
@@ -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
index f5eb07e859fbe64b0144be3f59db136b732fa8ae..fefff3a57a424a302f6fa734624fbf94109da20e 100644 (file)
@@ -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
index e9f8d7d25e1812d1a16d681b7ae10cedd88771cd..49b375a543fea47bd93ad551076ddbe7b5dbd056 100644 (file)
@@ -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
index 0f2d962412738a11f9a0fb4eee07cfc5313dfcea..d9a91bc3b23c883278c37f7ab8688c29a02e9248 100644 (file)
@@ -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
index 21d11305f1e8b44152d06ad924c0fdd662d3e396..af4a5f5c5eea40a06a3de2374ba842cce42c4735 100644 (file)
@@ -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
index 6233759a2e82a911699e4f5770d0663378d0bfec..afb054c0ef281e7d9b201a0d2933be13088371c2 100644 (file)
@@ -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
index 58a45126194c90499b24279b258c07432ee92826..1051ceb81cdd69e87675b4e8a3dc6d01b06585c9 100644 (file)
@@ -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
index 4b3198cc5aeca2c02a69c0c9d933f33a036103d9..9b499672161f39a1b8afd1b8291a1cb500d4fb48 100644 (file)
@@ -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
index 505a7b9b2dfa7fe2e588e44dea6a2ae645867a3f..b2636059bd845fe47de7ee2be2f655c1422eec14 100644 (file)
@@ -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
index 7513f19183372d031a8f36634758600ff2e7e082..657c8e23ed23835b6a4ce757953b50c55ff3548e 100644 (file)
@@ -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
index d8ab5e69a508eb2cfc4f5ed91c091744fed53e39..079e22d75ba7a7f548e00cbdf7a6e25ab9b44275 100644 (file)
@@ -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
index 4a01cd2a5c87245fde206a09fb2e197f7fce264d..9321b3a4e025d1fe944f33711996f32815950875 100644 (file)
@@ -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