authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-06-20 06:45:45-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-06-20 06:46:53-04:00
log55193cb13bbc69350474f6a66728319b41149274
tree1c16243809e6c1322d008cbc082268e631cfd5d6
parent7c99c30bf406342a45833963ce630bb104aef00e

fix runtime fn ptr equality codegen

closes #1140

2 files changed, 10 insertions(+), 5 deletions(-)

src/codegen.cpp+5-5
......@@ -2246,12 +2246,12 @@ static LLVMValueRef ir_render_bin_op(CodeGen *g, IrExecutable *executable,
22462246 } else if (type_entry->id == TypeTableEntryIdInt) {
22472247 LLVMIntPredicate pred = cmp_op_to_int_predicate(op_id, type_entry->data.integral.is_signed);
22482248 return LLVMBuildICmp(g->builder, pred, op1_value, op2_value, "");
2249 } else if (type_entry->id == TypeTableEntryIdEnum) {
2250 LLVMIntPredicate pred = cmp_op_to_int_predicate(op_id, false);
2251 return LLVMBuildICmp(g->builder, pred, op1_value, op2_value, "");
2252 } else if (type_entry->id == TypeTableEntryIdErrorSet ||
2249 } else if (type_entry->id == TypeTableEntryIdEnum ||
2250 type_entry->id == TypeTableEntryIdErrorSet ||
22532251 type_entry->id == TypeTableEntryIdPointer ||
2254 type_entry->id == TypeTableEntryIdBool)
2252 type_entry->id == TypeTableEntryIdBool ||
2253 type_entry->id == TypeTableEntryIdPromise ||
2254 type_entry->id == TypeTableEntryIdFn)
22552255 {
22562256 LLVMIntPredicate pred = cmp_op_to_int_predicate(op_id, false);
22572257 return LLVMBuildICmp(g->builder, pred, op1_value, op2_value, "");
test/cases/misc.zig+5
......@@ -701,3 +701,8 @@ test "comptime cast fn to ptr" {
701701 const addr2 = @ptrCast(*const u8, emptyFn);
702702 comptime assert(addr1 == addr2);
703703}
704
705test "equality compare fn ptrs" {
706 var a = emptyFn;
707 assert(a == a);
708}