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