From 247f4f3293c2b5a5021062dc432f559602e12282 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Fri, 21 May 2021 10:51:19 +0100 Subject: [PATCH] Fix `..=` logic in the backend --- src/check_expr.cpp | 2 +- src/llvm_backend.cpp | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 81fe3baa9..d714e90a8 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -3392,7 +3392,7 @@ ExactValue get_constant_field_single(CheckerContext *c, ExactValue value, i32 in GB_ASSERT(bt->kind == Type_EnumeratedArray); corrected_index = index + exact_value_to_i64(bt->EnumeratedArray.min_value); } - if (op == Token_Ellipsis) { + if (op != Token_RangeHalf) { if (lo <= corrected_index && corrected_index <= hi) { TypeAndValue tav = fv->value->tav; if (success_) *success_ = true; diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 08c9445bd..3b4e5f3f6 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -6231,7 +6231,7 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value, bool allow_loc TokenKind op = ie->op.kind; i64 lo = exact_value_to_i64(lo_tav.value); i64 hi = exact_value_to_i64(hi_tav.value); - if (op == Token_Ellipsis) { + if (op != Token_RangeHalf) { hi += 1; } if (lo == i) { @@ -6315,7 +6315,7 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value, bool allow_loc TokenKind op = ie->op.kind; i64 lo = exact_value_to_i64(lo_tav.value); i64 hi = exact_value_to_i64(hi_tav.value); - if (op == Token_Ellipsis) { + if (op != Token_RangeHalf) { hi += 1; } if (lo == i) { @@ -12704,7 +12704,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { TokenKind op = ie->op.kind; i64 lo = exact_value_to_i64(lo_tav.value); i64 hi = exact_value_to_i64(hi_tav.value); - if (op == Token_Ellipsis) { + if (op != Token_RangeHalf) { hi += 1; } @@ -12803,7 +12803,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { TokenKind op = ie->op.kind; i64 lo = exact_value_to_i64(lo_tav.value); i64 hi = exact_value_to_i64(hi_tav.value); - if (op == Token_Ellipsis) { + if (op != Token_RangeHalf) { hi += 1; } @@ -12912,7 +12912,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { TokenKind op = ie->op.kind; i64 lo = exact_value_to_i64(lo_tav.value); i64 hi = exact_value_to_i64(hi_tav.value); - if (op == Token_Ellipsis) { + if (op != Token_RangeHalf) { hi += 1; } @@ -13016,7 +13016,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { TokenKind op = ie->op.kind; i64 lo = exact_value_to_i64(lo_tav.value); i64 hi = exact_value_to_i64(hi_tav.value); - if (op == Token_Ellipsis) { + if (op != Token_RangeHalf) { hi += 1; }