# HG changeset patch # User Paul Boddie # Date 1490459051 -3600 # Node ID af05b2a6697a91c678c4a1a8be66fad3d8450cc1 # Parent 071b38ef10ea06109de9bff13f328c9914406513 Short-circuit boolean evaluation when either boolean value is present. diff -r 071b38ef10ea -r af05b2a6697a templates/progops.c --- a/templates/progops.c Sat Mar 25 17:23:35 2017 +0100 +++ b/templates/progops.c Sat Mar 25 17:24:11 2017 +0100 @@ -273,10 +273,9 @@ int __BOOL(__attr attr) { - __ref truevalue = __VALUE(__builtins___boolean_True); - /* Invoke the bool function with the object and test against True. */ - return (__VALUE(attr) == truevalue) || - (__VALUE(__fn___builtins___boolean_bool(__NULL, attr)) == truevalue); + return __VALUE(attr) == &__predefined___builtins___boolean_True ? 1 : + __VALUE(attr) == &__predefined___builtins___boolean_False ? 0 : + __VALUE(__fn___builtins___boolean_bool(__NULL, attr)) == &__predefined___builtins___boolean_True; }