From ff494fe999510ea40e3ed5827e7818550b6de126 Mon Sep 17 00:00:00 2001 From: Grazvydas Ignotas Date: Sat, 4 Mar 2017 02:49:18 +0200 Subject: ralloc: don't leave out the alignment factor 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 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 Tested by: Mike Lothian Tested by: Jonas Pfeil --- src/util/ralloc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/util') diff --git a/src/util/ralloc.c b/src/util/ralloc.c index 03283de7180..7bf192e0db7 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 { -- cgit v1.2.3