]> granicus.if.org Git - postgresql/commitdiff
Remove overzeleous assertions in pg_atomic_flag code.
authorAndres Freund <andres@anarazel.de>
Sun, 8 Apr 2018 01:27:14 +0000 (18:27 -0700)
committerAndres Freund <andres@anarazel.de>
Sun, 8 Apr 2018 01:30:15 +0000 (18:30 -0700)
The atomics code asserts proper alignment in various places. That's
mainly because the alignment of 64bit integers is not sufficient for
atomic operations on all platforms. Some ABIs only have four byte
alignment, but don't have atomic behavior when crossing page
boundaries.

The flags code isn't affected by that however, as the type alignment
always is sufficient for atomic operations. Nevertheless the code
asserted alignment requirements. Before 8c3debbb it was only broken on
hppa, after it probably affect further platforms.

Thus remove the assertions for pg_atomic_flag operators.

Per buildfarm animal pademelon.

Discussion: https://postgr.es/m/7223.1523124425@sss.pgh.pa.us
Backpatch: 9.5-

src/include/port/atomics.h

index 8c825bd9261cbfb0c7be08974c0983255f2bde9f..047039167552bfe9d2c2e2e0459c62d44f96c3c8 100644 (file)
 static inline void
 pg_atomic_init_flag(volatile pg_atomic_flag *ptr)
 {
-       AssertPointerAlignment(ptr, sizeof(*ptr));
-
        pg_atomic_init_flag_impl(ptr);
 }
 
@@ -189,8 +187,6 @@ pg_atomic_init_flag(volatile pg_atomic_flag *ptr)
 static inline bool
 pg_atomic_test_set_flag(volatile pg_atomic_flag *ptr)
 {
-       AssertPointerAlignment(ptr, sizeof(*ptr));
-
        return pg_atomic_test_set_flag_impl(ptr);
 }
 
@@ -204,8 +200,6 @@ pg_atomic_test_set_flag(volatile pg_atomic_flag *ptr)
 static inline bool
 pg_atomic_unlocked_test_flag(volatile pg_atomic_flag *ptr)
 {
-       AssertPointerAlignment(ptr, sizeof(*ptr));
-
        return pg_atomic_unlocked_test_flag_impl(ptr);
 }
 
@@ -217,8 +211,6 @@ pg_atomic_unlocked_test_flag(volatile pg_atomic_flag *ptr)
 static inline void
 pg_atomic_clear_flag(volatile pg_atomic_flag *ptr)
 {
-       AssertPointerAlignment(ptr, sizeof(*ptr));
-
        pg_atomic_clear_flag_impl(ptr);
 }