From 8ec109de3c975306e13f03789a229095a6bd40f1 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Tue, 26 Apr 2016 11:39:31 -0700 Subject: [PATCH] ability to compare booleans --- src/codegen.cpp | 3 ++- test/self_hosted.zig | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/codegen.cpp b/src/codegen.cpp index dda78a0653..6e7d28aa95 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -1543,7 +1543,8 @@ static LLVMValueRef gen_cmp_expr(CodeGen *g, AstNode *node) { zig_unreachable(); } } else if (op1_type->id == TypeTableEntryIdPureError || - op1_type->id == TypeTableEntryIdPointer) + op1_type->id == TypeTableEntryIdPointer || + op1_type->id == TypeTableEntryIdBool) { LLVMIntPredicate pred = cmp_op_to_int_predicate(node->data.bin_op_expr.bin_op, false); return LLVMBuildICmp(g->builder, pred, val1, val2, ""); diff --git a/test/self_hosted.zig b/test/self_hosted.zig index 4139694790..24c4da5682 100644 --- a/test/self_hosted.zig +++ b/test/self_hosted.zig @@ -1368,3 +1368,11 @@ error NoMem; error CrappedOut; #static_eval_enable(false) fn returns_ten() -> %i32 { 10 } + + +#attribute("test") +fn bool_cmp() { + assert(test_bool_cmp(true, false) == false); +} +#static_eval_enable(false) +fn test_bool_cmp(a: bool, b: bool) -> bool { a == b }