aboutsummaryrefslogtreecommitdiffstats
path: root/libavutil
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2023-08-02 00:30:29 +0300
committerMartin Storsjö <martin@martin.st>2023-08-04 21:50:57 +0300
commit62fac040c83bea33d43bbc98d6f11189b058d097 (patch)
tree8330108a052bd7486b571f498a635c31aa354ff0 /libavutil
parent802d2d1f0237239c6b923884a27aadcc3bdb1335 (diff)
downloadffmpeg-62fac040c83bea33d43bbc98d6f11189b058d097.tar.gz
intreadwrite: Indicate potential aliasing in AV_RN/AV_WN for Clang/MSVC mode
Use the GCC specific codepath for Clang in MSVC mode too. This matches the condition used in a number of other places. MSVC doesn't have a way to signal potential aliasing, while GCC (and Clang) can use __attribute__((may_alias)) for this purpose. When building with Clang in MSVC mode, __GNUC__ isn't defined but _MSC_VER is as Clang primarily impersonates MSVC - but even then it does support the GCC style attributes. The GCC specific codepath uses av_alias, which expands to the may_alias attribute if supported. The MSVC specific codepath doesn't use av_alias so far (as MSVC doesn't support any corresponding attribute). This fixes a couple HEVC decoder tests when built with Clang 14 or newer in MSVC mode (with issues observed on all of x86_64, armv7 and aarch64). Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libavutil')
-rw-r--r--libavutil/intreadwrite.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/libavutil/intreadwrite.h b/libavutil/intreadwrite.h
index c4679fdba4..21df7887f3 100644
--- a/libavutil/intreadwrite.h
+++ b/libavutil/intreadwrite.h
@@ -213,7 +213,7 @@ typedef union {
* by per-arch headers.
*/
-#if defined(__GNUC__)
+#if defined(__GNUC__) || defined(__clang__)
union unaligned_64 { uint64_t l; } __attribute__((packed)) av_alias;
union unaligned_32 { uint32_t l; } __attribute__((packed)) av_alias;