Experimentation shows that without alignment factor gcc and clang choose a factor of 16 even on IA-32, which doesn't match what malloc() uses (8). The problem is it makes gcc assume the pointer is 16 byte aligned, so with -O3 it starts using aligned SSE instructions that later fault, so always specify a suitable alignment factor.
Cc: Jonas Pfeil <pfeiljo...@gmx.de> Fixes: cd2b55e5 "ralloc: Make sure ralloc() allocations match malloc()'s alignment." Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100049 Signed-off-by: Grazvydas Ignotas <nota...@gmail.com> --- no commit access src/util/ralloc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/util/ralloc.c b/src/util/ralloc.c index 03283de..7bf192e 100644 --- a/src/util/ralloc.c +++ b/src/util/ralloc.c @@ -59,8 +59,10 @@ _CRTIMP int _vscprintf(const char *format, va_list argptr); struct #ifdef _MSC_VER __declspec(align(8)) +#elif defined(__LP64__) + __attribute__((aligned(16))) #else - __attribute__((aligned)) + __attribute__((aligned(8))) #endif ralloc_header { -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev