Mesa (master): gallivm: fix nested break statemants

Zack Rusin zack at kemper.freedesktop.org
Thu Apr 22 17:52:25 UTC 2010


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

Author: Zack Rusin <zackr at vmware.com>
Date:   Thu Apr 22 13:43:37 2010 -0400

gallivm: fix nested break statemants

---

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

diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
index 44f8aec..b87817d 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
@@ -232,6 +232,8 @@ static void lp_exec_bgnloop(struct lp_exec_mask *mask)
       mask->break_mask = LLVMConstAllOnes(mask->int_vec_type);
    if (mask->cond_stack_size == 0)
       mask->cond_mask = LLVMConstAllOnes(mask->int_vec_type);
+
+   mask->break_stack[mask->break_stack_size++] = mask->break_mask;
    mask->loop_stack[mask->loop_stack_size++] = mask->loop_block;
    mask->loop_block = lp_build_insert_new_block(mask->bld->builder, "bgnloop");
    LLVMBuildBr(mask->bld->builder, mask->loop_block);
@@ -246,7 +248,6 @@ static void lp_exec_break(struct lp_exec_mask *mask)
                                          mask->exec_mask,
                                          "break");
 
-   mask->break_stack[mask->break_stack_size++] = mask->break_mask;
    if (mask->break_stack_size > 1) {
       mask->break_mask = LLVMBuildAnd(mask->bld->builder,
                                       mask->break_mask,
@@ -304,7 +305,7 @@ static void lp_exec_endloop(struct lp_exec_mask *mask)
       mask->cont_mask = mask->cont_stack[--mask->cont_stack_size];
    }
    if (mask->break_stack_size) {
-      mask->break_mask = mask->cont_stack[--mask->break_stack_size];
+      mask->break_mask = mask->break_stack[--mask->break_stack_size];
    }
 
    lp_exec_mask_update(mask);




More information about the mesa-commit mailing list