projects
/
urcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Make temporary variable in _rcu_dereference non-const
[urcu.git]
/
include
/
urcu
/
static
/
pointer.h
diff --git
a/include/urcu/static/pointer.h
b/include/urcu/static/pointer.h
index ca9a2f9836760dd01207508d2615ee9f43d4e555..465a6101bcb12b5708ccfb90334b00969bf6b0c3 100644
(file)
--- a/
include/urcu/static/pointer.h
+++ b/
include/urcu/static/pointer.h
@@
-90,9
+90,15
@@
extern "C" {
# define __URCU_DEREFERENCE_USE_ATOMIC_CONSUME
#endif
# define __URCU_DEREFERENCE_USE_ATOMIC_CONSUME
#endif
+/*
+ * If p is const (the pointer itself, not what it points to), using
+ * __typeof__(p) would declare a const variable, leading to
+ * -Wincompatible-pointer-types errors. Using `+ 0` makes it an rvalue and
+ * gets rid of the const-ness.
+ */
#ifdef __URCU_DEREFERENCE_USE_ATOMIC_CONSUME
# define _rcu_dereference(p) __extension__ ({ \
#ifdef __URCU_DEREFERENCE_USE_ATOMIC_CONSUME
# define _rcu_dereference(p) __extension__ ({ \
- __typeof__(p
) _________p1;
\
+ __typeof__(p
+ 0) _________p1;
\
__atomic_load(&(p), &_________p1, __ATOMIC_CONSUME); \
(_________p1); \
})
__atomic_load(&(p), &_________p1, __ATOMIC_CONSUME); \
(_________p1); \
})
This page took
0.023656 seconds
and
4
git commands to generate.