Mesa (master): gallivm: Use lp_build_alloca instead of LLVMBuildAlloca on the loop limiter.

Jose Fonseca jrfonseca at kemper.freedesktop.org
Wed Apr 25 17:10:18 UTC 2012


Module: Mesa
Branch: master
Commit: 914244e59d6ad08ec2dd815129c6e75b32843d80
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=914244e59d6ad08ec2dd815129c6e75b32843d80

Author: José Fonseca <jfonseca at vmware.com>
Date:   Wed Apr 25 16:30:06 2012 +0100

gallivm: Use lp_build_alloca instead of LLVMBuildAlloca on the loop limiter.

To ensure that the alloca is at the top of the function body, otherwise
LLVM will not eliminate them, causing stack misalignment on 32bits.

Reviewed-by: James Benton <jbenton at vmware.com>

---

 src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c |    5 +----
 1 files changed, 1 insertions(+), 4 deletions(-)

diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
index 8cfcf5d..cca7ef5 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
@@ -79,10 +79,7 @@ static void lp_exec_mask_init(struct lp_exec_mask *mask, struct lp_build_context
    mask->exec_mask = mask->ret_mask = mask->break_mask = mask->cont_mask = mask->cond_mask =
          LLVMConstAllOnes(mask->int_vec_type);
 
-   mask->loop_limiter = LLVMBuildAlloca(
-      builder,
-      int_type,
-      "looplimiter");
+   mask->loop_limiter = lp_build_alloca(bld->gallivm, int_type, "looplimiter");
 
    LLVMBuildStore(
       builder,




More information about the mesa-commit mailing list