From 61c67eca7dbcef4b7b1398f5a9e0193597f304ed Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Wed, 18 May 2011 18:00:55 +0100 Subject: [PATCH] gallivm: Tell LLVM to not assume a 16-byte aligned stack on x86. Fixes fdo 36738. --- src/gallium/auxiliary/gallivm/lp_bld_misc.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp index 843a14a500c..0ccf6a698bd 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp +++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp @@ -73,6 +73,19 @@ lp_set_target_options(void) #endif #endif + /* + * LLVM revision 123367 switched the default stack alignment to 16 bytes on + * Linux (and several other Unices in later revisions), to match recent gcc + * versions. + * + * However our drivers can be loaded by old binary applications, still + * maintaining a 4 bytes stack alignment. Therefore we must tell LLVM here + * to only assume a 4 bytes alignment for backwards compatibility. + */ +#if defined(PIPE_ARCH_X86) + llvm::StackAlignment = 4; +#endif + #if defined(DEBUG) || defined(PROFILE) llvm::NoFramePointerElim = true; #endif -- 2.30.2