Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 5faead3

Browse files
committed
Remove overzeleous assertions in pg_atomic_flag code.
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 8c3debb 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-
1 parent 1f3bbe0 commit 5faead3

File tree

1 file changed

+0
-8
lines changed

1 file changed

+0
-8
lines changed

src/include/port/atomics.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,6 @@
173173
static inline void
174174
pg_atomic_init_flag(volatile pg_atomic_flag *ptr)
175175
{
176-
AssertPointerAlignment(ptr, sizeof(*ptr));
177-
178176
pg_atomic_init_flag_impl(ptr);
179177
}
180178

@@ -188,8 +186,6 @@ pg_atomic_init_flag(volatile pg_atomic_flag *ptr)
188186
static inline bool
189187
pg_atomic_test_set_flag(volatile pg_atomic_flag *ptr)
190188
{
191-
AssertPointerAlignment(ptr, sizeof(*ptr));
192-
193189
return pg_atomic_test_set_flag_impl(ptr);
194190
}
195191

@@ -203,8 +199,6 @@ pg_atomic_test_set_flag(volatile pg_atomic_flag *ptr)
203199
static inline bool
204200
pg_atomic_unlocked_test_flag(volatile pg_atomic_flag *ptr)
205201
{
206-
AssertPointerAlignment(ptr, sizeof(*ptr));
207-
208202
return pg_atomic_unlocked_test_flag_impl(ptr);
209203
}
210204

@@ -216,8 +210,6 @@ pg_atomic_unlocked_test_flag(volatile pg_atomic_flag *ptr)
216210
static inline void
217211
pg_atomic_clear_flag(volatile pg_atomic_flag *ptr)
218212
{
219-
AssertPointerAlignment(ptr, sizeof(*ptr));
220-
221213
pg_atomic_clear_flag_impl(ptr);
222214
}
223215

0 commit comments

Comments
 (0)