summaryrefslogblamecommitdiff
path: root/var/spack/repos/builtin/packages/mesa/handle_missing_set_override_stack_alignment.patch
blob: 9e90f120bcac4d9505bb1d1a21c562c7e2fee5c8 (plain) (tree)































                                                                                                          
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
index be288ab02e2..378381b16ff 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
+++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
@@ -616,11 +616,23 @@
 	return LLVMGetValueKind(v) == LLVMFunctionValueKind;
 }
 
+// setOverrideStackAlignment if it exists, but SFINAE
+template <typename T>
+static auto try_set_override_stack_alignment(T* M, unsigned align)
+   -> decltype(M->setOverrideStackAlignment(align))
+{
+   M->setOverrideStackAlignment(align);
+}
+
+template <typename T>
+static void try_set_override_stack_alignment(T M, unsigned align)
+{
+// fallback for when setOverrideStackAlignment does not exist
+}
+
 extern "C" void
 lp_set_module_stack_alignment_override(LLVMModuleRef MRef, unsigned align)
 {
-#if LLVM_VERSION_MAJOR >= 13
    llvm::Module *M = llvm::unwrap(MRef);
-   M->setOverrideStackAlignment(align);
-#endif
+   try_set_override_stack_alignment(M, align);
 }