gallivm: Use lp_build_alloca instead of LLVMBuildAlloca on the loop limiter.
authorJosé Fonseca <jfonseca@vmware.com>
Wed, 25 Apr 2012 15:30:06 +0000 (16:30 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Wed, 25 Apr 2012 17:09:38 +0000 (18:09 +0100)
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@vmware.com>
src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c

index 8cfcf5df730b18657b3b6c525787407ba27a7be8..cca7ef5f89a027b631e97e2db3b8db924ca44667 100644 (file)
@@ -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,