gallivm: Tell LLVM to not assume a 16-byte aligned stack on x86.
authorJosé Fonseca <jfonseca@vmware.com>
Wed, 18 May 2011 17:00:55 +0000 (18:00 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Wed, 18 May 2011 17:14:37 +0000 (18:14 +0100)
Fixes fdo 36738.

src/gallium/auxiliary/gallivm/lp_bld_misc.cpp

index 843a14a500c3f89264a162246c066e2732c197c5..0ccf6a698bda955394557d088dca2d55dcb95151 100644 (file)
@@ -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