diff --git a/src/codegen.cpp b/src/codegen.cpp index dda78a065386d4960c91de07d578eccd4cada261..6e7d28aa95b750cf3e2de96d2197ca34813a3e3d 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 41396947907e76088a28be66c1753d762018af98..24c4da56824e28ba1c0872372d2714e2550d269b 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 }