From 66f2881a78b717bdb8410956ccbffb679fbccea5 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Fri, 17 Feb 2023 17:02:37 +0000 Subject: Allow comparisons between empty `struct{}` and `union{}` --- src/llvm_backend_expr.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/llvm_backend_expr.cpp') diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp index 480831a68..5bffc7226 100644 --- a/src/llvm_backend_expr.cpp +++ b/src/llvm_backend_expr.cpp @@ -2210,6 +2210,15 @@ gb_internal lbValue lb_compare_records(lbProcedure *p, TokenKind op_kind, lbValu lbValue left_ptr = lb_address_from_load_or_generate_local(p, left); lbValue right_ptr = lb_address_from_load_or_generate_local(p, right); lbValue res = {}; + if (type_size_of(type) == 0) { + switch (op_kind) { + case Token_CmpEq: + return lb_const_bool(p->module, t_bool, true); + case Token_NotEq: + return lb_const_bool(p->module, t_bool, false); + } + GB_PANIC("invalid operator"); + } if (is_type_simple_compare(type)) { // TODO(bill): Test to see if this is actually faster!!!! auto args = array_make(permanent_allocator(), 3); -- cgit v1.2.3