mirror of
https://github.com/webmproject/libwebp.git
synced 2024-12-26 13:48:21 +01:00
dsp.h: add WEBP_UBSAN_IGNORE_UNDEF
only defined when WEBP_FORCE_ALIGNED isn't. use it to quiet alignment warnings VP8LoadNewBytes(). Change-Id: I710a74bb9375285974e97022540551a3f4eda414
This commit is contained in:
parent
4154a8395d
commit
369e264e2e
@ -101,6 +101,19 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// This macro prevents the undefined behavior sanitizer from reporting
|
||||||
|
// failures. This is only meant to silence unaligned loads on platforms that
|
||||||
|
// are known to support them.
|
||||||
|
#define WEBP_UBSAN_IGNORE_UNDEF
|
||||||
|
#if !defined(WEBP_FORCE_ALIGNED) && defined(__clang__) && \
|
||||||
|
defined(__has_attribute)
|
||||||
|
#if __has_attribute(no_sanitize)
|
||||||
|
#undef WEBP_UBSAN_IGNORE_UNDEF
|
||||||
|
#define WEBP_UBSAN_IGNORE_UNDEF \
|
||||||
|
__attribute__((no_sanitize("undefined")))
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
kSSE2,
|
kSSE2,
|
||||||
kSSE3,
|
kSSE3,
|
||||||
|
@ -55,7 +55,8 @@ void VP8LoadFinalBytes(VP8BitReader* const br);
|
|||||||
// Inlined critical functions
|
// Inlined critical functions
|
||||||
|
|
||||||
// makes sure br->value_ has at least BITS bits worth of data
|
// makes sure br->value_ has at least BITS bits worth of data
|
||||||
static WEBP_INLINE void VP8LoadNewBytes(VP8BitReader* const br) {
|
static WEBP_UBSAN_IGNORE_UNDEF WEBP_INLINE
|
||||||
|
void VP8LoadNewBytes(VP8BitReader* const br) {
|
||||||
assert(br != NULL && br->buf_ != NULL);
|
assert(br != NULL && br->buf_ != NULL);
|
||||||
// Read 'BITS' bits at a time if possible.
|
// Read 'BITS' bits at a time if possible.
|
||||||
if (br->buf_ < br->buf_max_) {
|
if (br->buf_ < br->buf_max_) {
|
||||||
|
Loading…
Reference in New Issue
Block a user