diff --git a/src/las.c b/src/las.c index 71ac1ca3d4acf53c15529c6c64de1525418d923b..1f957ccfe2f66402c03409916683fc18d384906f 100644 --- a/src/las.c +++ b/src/las.c @@ -5,7 +5,7 @@ \*/ /**/ #include "global.h" -RCSID("$Id: las.c,v 1.94 1999/11/05 01:45:30 grubba Exp $"); +RCSID("$Id: las.c,v 1.95 1999/11/05 17:06:43 grubba Exp $"); #include "language.h" #include "interpret.h" @@ -1967,6 +1967,10 @@ static void optimize(node *n) CAAR(n)=CADR(n)=0; goto use_tmp1; } + /* 0 || Y -> Y */ + if (node_is_false(CAR(n))) goto use_cdr; + /* 1 || Y -> 1 */ + if (node_is_true(CAR(n))) goto use_car; break; case F_LAND: @@ -1977,6 +1981,10 @@ static void optimize(node *n) CAAR(n)=CADR(n)=0; goto use_tmp1; } + /* 0 && Y -> 0 */ + if (node_is_false(CAR(n))) goto use_car; + /* 1 && Y -> Y */ + if (node_is_true(CAR(n))) goto use_cdr; break; case '?':