Skip to content

util: Fix fxarea struct with Clang

Mike Lothian requested to merge FireBurn/mesa:main into main

This fixes the following errors when compiling Mesa with Clang 14:

FAILED: src/util/libmesa_util.a.p/u_cpu_detect.c.o clang -m32 -Isrc/util/libmesa_util.a.p -Isrc/util -I../mesa-9999/src/util -Iinclude -I../mesa-9999/include -Isrc -I../mesa-9999/src -Isrc/mapi -I../mesa-9999/src/mapi -Isrc/mesa -I../mesa-9999/src/mesa -I../mes a-9999/src/gallium/include -Isrc/gallium/auxiliary -I../mesa-9999/src/gallium/auxiliary -fvisibility=hidden -fcolor-diagnostics -DNDEBUG -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=c11 -O0 -D__STDC_CONSTANT MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS '-DPACKAGE_VERSION="22.2.0-devel"' '-DPACKAGE_BUGREPORT="https://gitlab.freedesktop.org/mesa/mesa/-/issues"' -DHAVE_RADEONSI -DHAVE_SWRAST -DHAVE_ZINK -DVIDE O_CODEC_VC1DEC=1 -DVIDEO_CODEC_H264DEC=1 -DVIDEO_CODEC_H264ENC=1 -DVIDEO_CODEC_H265DEC=1 -DVIDEO_CODEC_H265ENC=1 -DHAVE_X11_PLATFORM -DHAVE_WAYLAND_PLATFORM -DHAVE_SURFACELESS_PLATFORM -DHAVE_DRM_PLATFORM -DHAV E_XCB_PLATFORM -DUSE_ELF_TLS -DENABLE_ST_OMX_BELLAGIO=0 -DENABLE_ST_OMX_TIZONIA=0 -DHAVE_VA_SURFACE_ATTRIB_DRM_FORMAT_MODIFIERS -DGLX_INDIRECT_RENDERING -DGLX_DIRECT_RENDERING -DGLX_USE_DRM -DENABLE_SHADER_CACH E -DHAVE___BUILTIN_BSWAP32 -DHAVE___BUILTIN_BSWAP64 -DHAVE___BUILTIN_CLZ -DHAVE___BUILTIN_CLZLL -DHAVE___BUILTIN_CTZ -DHAVE___BUILTIN_EXPECT -DHAVE___BUILTIN_FFS -DHAVE___BUILTIN_FFSLL -DHAVE___BUILTIN_POPCOUNT -DHAVE___BUILTIN_POPCOUNTLL -DHAVE___BUILTIN_UNREACHABLE -DHAVE___BUILTIN_TYPES_COMPATIBLE_P -DHAVE_FUNC_ATTRIBUTE_CONST -DHAVE_FUNC_ATTRIBUTE_FLATTEN -DHAVE_FUNC_ATTRIBUTE_MALLOC -DHAVE_FUNC_ATTRIBUTE_PURE -D HAVE_FUNC_ATTRIBUTE_UNUSED -DHAVE_FUNC_ATTRIBUTE_WARN_UNUSED_RESULT -DHAVE_FUNC_ATTRIBUTE_WEAK -DHAVE_FUNC_ATTRIBUTE_FORMAT -DHAVE_FUNC_ATTRIBUTE_PACKED -DHAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL -DHAVE_FUNC_ATTRIBU TE_ALIAS -DHAVE_FUNC_ATTRIBUTE_NORETURN -DHAVE_FUNC_ATTRIBUTE_VISIBILITY -D_GNU_SOURCE -DUSE_SSE41 -DUSE_GCC_ATOMIC_BUILTINS -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM -DMAJOR_IN_SYSMACROS -DHAS SCHED_H -DHAS_SCHED_GETAFFINITY -DHAVE_LINUX_FUTEX_H -DHAVE_ENDIAN_H -DHAVE_DLFCN_H -DHAVE_SYS_SHM_H -DHAVE_CET_H -DHAVE_STRTOF -DHAVE_MKOSTEMP -DHAVE_TIMESPEC_GET -DHAVE_MEMFD_CREATE -DHAVE_RANDOM_R -DHAVE_FLO CK -DHAVE_STRTOK_R -DHAVE_GETRANDOM -DHAVE_QSORT_R -DHAVE_STRUCT_TIMESPEC -DHAVE_PROGRAM_INVOCATION_NAME -DHAVE_ISSIGNALING -DHAVE_POSIX_MEMALIGN -DHAVE_DIRENT_D_TYPE -DHAVE_STRTOD_L -DHAVE_DLADDR -DHAVE_DL_ITE RATE_PHDR -DHAVE_ZLIB -DHAVE_ZSTD -DHAVE_COMPRESSION -DHAVE_PTHREAD -DHAVE_PTHREAD_SETAFFINITY -DHAVE_LIBDRM -DHAVE_LIBUDEV -DLLVM_AVAILABLE '-DMESA_LLVM_VERSION_STRING="14.0.5"' -DLLVM_IS_SHARED=1 -DDRAW_LLVM_ AVAILABLE -DUSE_LIBGLVND=1 -DMESA_EXECMEM -DWL_HIDE_DEPRECATED -DHAVE_DRI3 -DHAVE_DRI3_MODIFIERS -DHAVE_LIBSENSORS=1 -DVK_USE_PLATFORM_WAYLAND_KHR -DVK_USE_PLATFORM_XCB_KHR -DVK_USE_PLATFORM_XLIB_KHR -DVK_USE_P LATFORM_XLIB_XRANDR_EXT -DVK_USE_PLATFORM_DISPLAY_KHR -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=return-type -Werror=empty-body -Werror=incompatible-pointer-types -Werror=int-conve rsion -Wimplicit-fallthrough -Wno-missing-field-initializers -fno-math-errno -fno-trapping-math -Qunused-arguments -fno-common -Wno-microsoft-enum-value -Wno-unused-function -Werror=format -Wformat-security -We rror=thread-safety -ffunction-sections -fdata-sections -msse2 -mfpmath=sse -mstackrealign -O3 -pipe -flto=thin -march=native -fPIC -pthread -Werror=pointer-arith -Werror=vla -Werror=gnu-empty-initializer -MD -M Q src/util/libmesa_util.a.p/u_cpu_detect.c.o -MF src/util/libmesa_util.a.p/u_cpu_detect.c.o.d -o src/util/libmesa_util.a.p/u_cpu_detect.c.o -c ../mesa-9999/src/util/u_cpu_detect.c ../mesa-9999/src/util/u_cpu_detect.c:368:5: error: expected ';' after struct } alignas(16) fxarea; ^ ; ../mesa-9999/src/util/u_cpu_detect.c:364:4: warning: declaration does not declare anything [-Wmissing-declarations] struct { ^ ../mesa-9999/src/util/u_cpu_detect.c:368:18: warning: type specifier missing, defaults to 'int' [-Wimplicit-int] } alignas(16) fxarea; ^ ../mesa-9999/src/util/u_cpu_detect.c:370:10: error: member reference base type 'int' is not a structure or union fxarea.mxcsr_mask = 0;

../mesa-9999/src/util/u_cpu_detect.c:378:20: error: member reference base type 'int' is not a structure or union
return !!(fxarea.mxcsr_mask & (1 << 6));
          ~~~~~~^~~~~~~~~~~
2 warnings and 3 errors generated.

This has been tested with Clang 14.0.5 and GCC 12.1

Signed-off-by: Mike Lothian <mike@fireburn.co.uk>

Merge request reports