From 8583fd7f9f96887fe685354662b1fc076ebeb031 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Sun, 24 Apr 2016 12:27:59 -0700 Subject: [PATCH] add codegen for pointer comparison see #145 --- src/codegen.cpp | 4 +++- test/self_hosted.zig | 11 +++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/codegen.cpp b/src/codegen.cpp index 26ccb77d7f..22154d5e34 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -1480,7 +1480,9 @@ static LLVMValueRef gen_cmp_expr(CodeGen *g, AstNode *node) { } else { zig_unreachable(); } - } else if (op1_type->id == TypeTableEntryIdPureError) { + } else if (op1_type->id == TypeTableEntryIdPureError || + op1_type->id == TypeTableEntryIdPointer) + { LLVMIntPredicate pred = cmp_op_to_int_predicate(node->data.bin_op_expr.bin_op, false); return LLVMBuildICmp(g->builder, pred, val1, val2, ""); } else { diff --git a/test/self_hosted.zig b/test/self_hosted.zig index ae47716a12..b136279bd3 100644 --- a/test/self_hosted.zig +++ b/test/self_hosted.zig @@ -1322,3 +1322,14 @@ fn pass_slice_of_empty_struct_to_fn() { fn test_pass_slice_of_empty_struct_to_fn(slice: []EmptyStruct2) -> isize { slice.len } + + +#attribute("test") +fn pointer_comparison() { + const a = ([]u8)("a"); + const b = &a; + assert(ptr_eql(b, b)); +} +fn ptr_eql(a: &[]u8, b: &[]u8) -> bool { + a == b +}