Commit 8583fd7f9f

Andrew Kelley <superjoe30@gmail.com>
2016-04-24 21:27:59
add codegen for pointer comparison
see #145
1 parent 8ad75a9
Changed files (2)
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 {
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
+}