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 }