aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_expr.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2022-12-22 11:53:13 +0000
committergingerBill <bill@gingerbill.org>2022-12-22 11:53:13 +0000
commite98f1a28e68e82753728f58b3465793192b74f9d (patch)
tree529e4dde0e4854d414233c5756efb3892dcb8b28 /src/llvm_backend_expr.cpp
parentb9a2426e577e15ae861ce73b7c5a86a0df496e65 (diff)
Change `tav` to be a pointer internally
Diffstat (limited to 'src/llvm_backend_expr.cpp')
-rw-r--r--src/llvm_backend_expr.cpp32
1 files changed, 16 insertions, 16 deletions
diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp
index d574caf4c..794ed7720 100644
--- a/src/llvm_backend_expr.cpp
+++ b/src/llvm_backend_expr.cpp
@@ -1330,7 +1330,7 @@ gb_internal lbValue lb_build_binary_expr(lbProcedure *p, Ast *expr) {
TypeAndValue tv = type_and_value_of_expr(expr);
- if (is_type_matrix(be->left->tav.type) || is_type_matrix(be->right->tav.type)) {
+ if (is_type_matrix(be->left->tav().type) || is_type_matrix(be->right->tav().type)) {
lbValue left = lb_build_expr(p, be->left);
lbValue right = lb_build_expr(p, be->right);
return lb_emit_arith_matrix(p, be->op.kind, left, right, default_type(tv.type), false);
@@ -1372,12 +1372,12 @@ gb_internal lbValue lb_build_binary_expr(lbProcedure *p, Ast *expr) {
case Token_CmpEq:
case Token_NotEq:
- if (is_type_untyped_nil(be->right->tav.type)) {
+ if (is_type_untyped_nil(be->right->tav().type)) {
lbValue left = lb_build_expr(p, be->left);
lbValue cmp = lb_emit_comp_against_nil(p, be->op.kind, left);
Type *type = default_type(tv.type);
return lb_emit_conv(p, cmp, type);
- } else if (is_type_untyped_nil(be->left->tav.type)) {
+ } else if (is_type_untyped_nil(be->left->tav().type)) {
lbValue right = lb_build_expr(p, be->right);
lbValue cmp = lb_emit_comp_against_nil(p, be->op.kind, right);
Type *type = default_type(tv.type);
@@ -1392,11 +1392,11 @@ gb_internal lbValue lb_build_binary_expr(lbProcedure *p, Ast *expr) {
lbValue left = {};
lbValue right = {};
- if (be->left->tav.mode == Addressing_Type) {
- left = lb_typeid(p->module, be->left->tav.type);
+ if (be->left->tav().mode == Addressing_Type) {
+ left = lb_typeid(p->module, be->left->tav().type);
}
- if (be->right->tav.mode == Addressing_Type) {
- right = lb_typeid(p->module, be->right->tav.type);
+ if (be->right->tav().mode == Addressing_Type) {
+ right = lb_typeid(p->module, be->right->tav().type);
}
if (left.value == nullptr) left = lb_build_expr(p, be->left);
if (right.value == nullptr) right = lb_build_expr(p, be->right);
@@ -3093,7 +3093,7 @@ gb_internal lbValue lb_build_expr_internal(lbProcedure *p, Ast *expr) {
if (tv.value.kind != ExactValue_Invalid) {
// NOTE(bill): The commented out code below is just for debug purposes only
// if (is_type_untyped(type)) {
- // gb_printf_err("%s %s : %s @ %p\n", token_pos_to_string(expr_pos), expr_to_string(expr), type_to_string(expr->tav.type), expr);
+ // gb_printf_err("%s %s : %s @ %p\n", token_pos_to_string(expr_pos), expr_to_string(expr), type_to_string(expr->tav().type), expr);
// GB_PANIC("%s\n", type_to_string(tv.type));
// }
@@ -3514,8 +3514,8 @@ gb_internal void lb_build_addr_compound_lit_populate(lbProcedure *p, Slice<Ast *
}
if (is_ast_range(fv->field)) {
ast_node(ie, BinaryExpr, fv->field);
- TypeAndValue lo_tav = ie->left->tav;
- TypeAndValue hi_tav = ie->right->tav;
+ TypeAndValue lo_tav = ie->left->tav();
+ TypeAndValue hi_tav = ie->right->tav();
GB_ASSERT(lo_tav.mode == Addressing_Constant);
GB_ASSERT(hi_tav.mode == Addressing_Constant);
@@ -3556,7 +3556,7 @@ gb_internal void lb_build_addr_compound_lit_populate(lbProcedure *p, Slice<Ast *
}
}
} else {
- auto tav = fv->field->tav;
+ auto tav = fv->field->tav();
GB_ASSERT(tav.mode == Addressing_Constant);
i64 index = exact_value_to_i64(tav.value);
@@ -3632,7 +3632,7 @@ gb_internal lbAddr lb_build_addr_index_expr(lbProcedure *p, Ast *expr) {
return lb_addr_soa_variable(val, index, ie->index);
}
- if (ie->expr->tav.mode == Addressing_SoaVariable) {
+ if (ie->expr->tav().mode == Addressing_SoaVariable) {
// SOA Structures for slices/dynamic arrays
GB_ASSERT(is_type_pointer(type_of_expr(ie->expr)));
@@ -4451,8 +4451,8 @@ gb_internal lbAddr lb_build_addr_internal(lbProcedure *p, Ast *expr) {
a = lb_addr_get_ptr(p, addr);
}
- GB_ASSERT(is_type_array(expr->tav.type));
- return lb_addr_swizzle(a, expr->tav.type, swizzle_count, swizzle_indices);
+ GB_ASSERT(is_type_array(expr->tav().type));
+ return lb_addr_swizzle(a, expr->tav().type, swizzle_count, swizzle_indices);
}
Selection sel = lookup_field(type, selector, false);
@@ -4621,7 +4621,7 @@ gb_internal lbAddr lb_build_addr_internal(lbProcedure *p, Ast *expr) {
case_ast_node(ce, CallExpr, expr);
BuiltinProcId builtin_id = BuiltinProc_Invalid;
- if (ce->proc->tav.mode == Addressing_Builtin) {
+ if (ce->proc->tav().mode == Addressing_Builtin) {
Entity *e = entity_of_node(ce->proc);
if (e != nullptr) {
builtin_id = cast(BuiltinProcId)e->Builtin.id;
@@ -4629,7 +4629,7 @@ gb_internal lbAddr lb_build_addr_internal(lbProcedure *p, Ast *expr) {
builtin_id = BuiltinProc_DIRECTIVE;
}
}
- auto const &tv = expr->tav;
+ auto const &tv = expr->tav();
if (builtin_id == BuiltinProc_swizzle &&
is_type_array(tv.type)) {
// NOTE(bill, 2021-08-09): `swizzle` has some bizarre semantics so it needs to be