mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-05 23:28:48 +00:00
Merge pull request #1927 from IanLilleyT/debug_symbols_for_range_interval
Debug symbols for range-based for loop over number range
This commit is contained in:
+14
-11
@@ -458,15 +458,6 @@ void lb_build_range_interval(lbProcedure *p, AstBinaryExpr *node,
|
|||||||
val1_type = type_of_expr(rs->vals[1]);
|
val1_type = type_of_expr(rs->vals[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (val0_type != nullptr) {
|
|
||||||
Entity *e = entity_of_node(rs->vals[0]);
|
|
||||||
lb_add_local(p, e->type, e, true);
|
|
||||||
}
|
|
||||||
if (val1_type != nullptr) {
|
|
||||||
Entity *e = entity_of_node(rs->vals[1]);
|
|
||||||
lb_add_local(p, e->type, e, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
TokenKind op = Token_Lt;
|
TokenKind op = Token_Lt;
|
||||||
switch (node->op.kind) {
|
switch (node->op.kind) {
|
||||||
case Token_Ellipsis: op = Token_LtEq; break;
|
case Token_Ellipsis: op = Token_LtEq; break;
|
||||||
@@ -478,10 +469,22 @@ void lb_build_range_interval(lbProcedure *p, AstBinaryExpr *node,
|
|||||||
lbValue lower = lb_build_expr(p, node->left);
|
lbValue lower = lb_build_expr(p, node->left);
|
||||||
lbValue upper = {}; // initialized each time in the loop
|
lbValue upper = {}; // initialized each time in the loop
|
||||||
|
|
||||||
lbAddr value = lb_add_local_generated(p, val0_type ? val0_type : lower.type, false);
|
lbAddr value;
|
||||||
|
if (val0_type != nullptr) {
|
||||||
|
Entity *e = entity_of_node(rs->vals[0]);
|
||||||
|
value = lb_add_local(p, val0_type, e, false);
|
||||||
|
} else {
|
||||||
|
value = lb_add_local_generated(p, lower.type, false);
|
||||||
|
}
|
||||||
lb_addr_store(p, value, lower);
|
lb_addr_store(p, value, lower);
|
||||||
|
|
||||||
lbAddr index = lb_add_local_generated(p, t_int, false);
|
lbAddr index;
|
||||||
|
if (val1_type != nullptr) {
|
||||||
|
Entity *e = entity_of_node(rs->vals[1]);
|
||||||
|
index = lb_add_local(p, val1_type, e, false);
|
||||||
|
} else {
|
||||||
|
index = lb_add_local_generated(p, t_int, false);
|
||||||
|
}
|
||||||
lb_addr_store(p, index, lb_const_int(m, t_int, 0));
|
lb_addr_store(p, index, lb_const_int(m, t_int, 0));
|
||||||
|
|
||||||
lbBlock *loop = lb_create_block(p, "for.interval.loop");
|
lbBlock *loop = lb_create_block(p, "for.interval.loop");
|
||||||
|
|||||||
Reference in New Issue
Block a user