From: José Fonseca Date: Wed, 18 May 2011 17:00:55 +0000 (+0100) Subject: gallivm: Tell LLVM to not assume a 16-byte aligned stack on x86. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=61c67eca7dbcef4b7b1398f5a9e0193597f304ed;p=mesa.git gallivm: Tell LLVM to not assume a 16-byte aligned stack on x86. Fixes fdo 36738. --- 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