[Spice-devel] [PATCH v4 2/3] Put alignment checks under #ifdef SPICE_DEBUG_ALIGNMENT
Christophe de Dinechin
christophe at dinechin.org
Tue May 30 12:51:50 UTC 2017
From: Christophe de Dinechin <dinechin at redhat.com>
Signed-off-by: Christophe de Dinechin <dinechin at redhat.com>
---
common/mem.c | 3 +--
common/mem.h | 27 ++++++++++++++-------------
2 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/common/mem.c b/common/mem.c
index 5ce6874..fc8b453 100644
--- a/common/mem.c
+++ b/common/mem.c
@@ -295,6 +295,7 @@ size_t spice_buffer_remove(SpiceBuffer *buffer, size_t len)
return len;
}
+#ifdef SPICE_DEBUG_ALIGNMENT
void spice_alignment_warning(const char *loc, void *p, unsigned sz)
{
static const char *last_loc = NULL;
@@ -305,8 +306,6 @@ void spice_alignment_warning(const char *loc, void *p, unsigned sz)
}
}
-
-#ifdef SPICE_DEBUG_ALIGNMENT
void spice_alignment_debug(const char *loc, void *p, unsigned sz)
{
static const char *last_loc = NULL;
diff --git a/common/mem.h b/common/mem.h
index 91d49ce..9c911bd 100644
--- a/common/mem.h
+++ b/common/mem.h
@@ -141,37 +141,38 @@ size_t spice_strnlen(const char *str, size_t max_len);
#endif
/* Cast to a type with stricter alignment constraints (to build with clang) */
+
+/* Misaligned cast to a type with stricter alignment */
+#ifndef SPICE_DEBUG_ALIGNMENT
+#define SPICE_UNALIGNED_CAST(type, value) ((type)(void *)(value))
+#define SPICE_ALIGNED_CAST(type, value) ((type)(void *)(value))
+
+#else // SPICE_DEBUG_ALIGNMENT
#define SPICE_ALIGNED_CAST(type, value) \
((type)spice_alignment_check(SPICE_STRLOC, \
(void *)(value), \
__alignof(*((type)0))))
+#define SPICE_UNALIGNED_CAST(type, value) \
+ ((type)spice_alignment_weak_check(SPICE_STRLOC, \
+ (void *)(value), \
+ __alignof(*((type)0))))
+
extern void spice_alignment_warning(const char *loc, void *p, unsigned sz);
+extern void spice_alignment_debug(const char *loc, void *p, unsigned sz);
+
static inline void *spice_alignment_check(const char *loc,
void *ptr, unsigned sz)
{
-#ifndef NDEBUG
if (G_UNLIKELY(((uintptr_t) ptr & (sz-1U)) != 0))
spice_alignment_warning(loc, ptr, sz);
-#endif // NDEBUG
return ptr;
}
-/* Misaligned cast to a type with stricter alignment */
-#ifndef SPICE_DEBUG_ALIGNMENT
-#define SPICE_UNALIGNED_CAST(type, value) ((type)(void *)(value))
-
-#else // SPICE_DEBUG_ALIGNMENT
-#define SPICE_UNALIGNED_CAST(type, value) \
- ((type)spice_alignment_weak_check(SPICE_STRLOC, \
- (void *)(value), \
- __alignof(*((type)0))))
-
static inline void *spice_alignment_weak_check(const char *loc,
void *ptr, unsigned sz)
{
- extern void spice_alignment_debug(const char *loc, void *p, unsigned sz);
if (G_UNLIKELY(((uintptr_t) ptr & (sz-1U)) != 0))
spice_alignment_debug(loc, ptr, sz);
return ptr;
--
2.11.0 (Apple Git-81)
More information about the Spice-devel
mailing list