mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
Just compare against nil directly if the comparator is known to be nil too
This commit is contained in:
@@ -2524,9 +2524,16 @@ gb_internal lbValue lb_emit_comp(lbProcedure *p, TokenKind op_kind, lbValue left
|
|||||||
if (are_types_identical(a, b)) {
|
if (are_types_identical(a, b)) {
|
||||||
// NOTE(bill): No need for a conversion
|
// NOTE(bill): No need for a conversion
|
||||||
} else if (lb_is_const(left) || lb_is_const_nil(left)) {
|
} else if (lb_is_const(left) || lb_is_const_nil(left)) {
|
||||||
|
if (lb_is_const_nil(left)) {
|
||||||
|
return lb_emit_comp_against_nil(p, op_kind, right);
|
||||||
|
}
|
||||||
left = lb_emit_conv(p, left, right.type);
|
left = lb_emit_conv(p, left, right.type);
|
||||||
} else if (lb_is_const(right) || lb_is_const_nil(right)) {
|
} else if (lb_is_const(right) || lb_is_const_nil(right)) {
|
||||||
|
if (lb_is_const_nil(right)) {
|
||||||
|
return lb_emit_comp_against_nil(p, op_kind, left);
|
||||||
|
}
|
||||||
right = lb_emit_conv(p, right, left.type);
|
right = lb_emit_conv(p, right, left.type);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Type *lt = left.type;
|
Type *lt = left.type;
|
||||||
Type *rt = right.type;
|
Type *rt = right.type;
|
||||||
|
|||||||
Reference in New Issue
Block a user