diff options
| author | gingerBill <bill@gingerbill.org> | 2019-12-15 11:41:21 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2019-12-15 11:41:21 +0000 |
| commit | 4ba579bc25ab2bbde370231d090588c237552c76 (patch) | |
| tree | f2fb2615250d719446848d98f0c0f5b55583bf28 /src/check_stmt.cpp | |
| parent | 58d4d424c6db749c10d723844ec5a847243bee39 (diff) | |
Also allow #no_bounds_check on an expression #499
Diffstat (limited to 'src/check_stmt.cpp')
| -rw-r--r-- | src/check_stmt.cpp | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/src/check_stmt.cpp b/src/check_stmt.cpp index a2c158638..7d5648018 100644 --- a/src/check_stmt.cpp +++ b/src/check_stmt.cpp @@ -335,27 +335,26 @@ Type *check_assignment_variable(CheckerContext *ctx, Operand *lhs, Operand *rhs) void check_stmt_internal(CheckerContext *ctx, Ast *node, u32 flags); void check_stmt(CheckerContext *ctx, Ast *node, u32 flags) { - u32 prev_stmt_state_flags = ctx->stmt_state_flags; + u32 prev_state_flags = ctx->state_flags; - if (node->stmt_state_flags != 0) { - u32 in = node->stmt_state_flags; - u32 out = ctx->stmt_state_flags; + if (node->state_flags != 0) { + u32 in = node->state_flags; + u32 out = ctx->state_flags; - if (in & StmtStateFlag_no_bounds_check) { - out |= StmtStateFlag_no_bounds_check; - out &= ~StmtStateFlag_bounds_check; - } else { - // if (in & StmtStateFlag_bounds_check) { - out |= StmtStateFlag_bounds_check; - out &= ~StmtStateFlag_no_bounds_check; + if (in & StateFlag_no_bounds_check) { + out |= StateFlag_no_bounds_check; + out &= ~StateFlag_bounds_check; + } else if (in & StateFlag_bounds_check) { + out |= StateFlag_bounds_check; + out &= ~StateFlag_no_bounds_check; } - ctx->stmt_state_flags = out; + ctx->state_flags = out; } check_stmt_internal(ctx, node, flags); - ctx->stmt_state_flags = prev_stmt_state_flags; + ctx->state_flags = prev_state_flags; } |