I have remembered the name correctly, haven't I? Would it gain us much implementing De Morgan's theorem in the peephole optimiser?
nick@Bagpuss [nick]$ perl -le 'for $l (0,1) {for $r (0, 1) {print 0+(!$l && !$r) }}' 1 0 0 0 nick@Bagpuss [nick]$ perl -le 'for $l (0,1) {for $r (0, 1) {print 0+!($l || $r) }}' 1 0 0 0 nick@Bagpuss [nick]$ perl -MO=Terse -e 'print 0+(!$l && !$r)' LISTOP (0x164048) leave [1] OP (0x164070) enter COP (0x164008) nextstate LISTOP (0x163fc0) print OP (0x163fe8) pushmark BINOP (0x163f98) add [1] SVOP (0x163db0) const IV (0xed2b8) 0 UNOP (0x163f78) null LOGOP (0x10db20) and UNOP (0x163e68) not UNOP (0x163e48) null [15] SVOP (0x163dd0) gvsv GV (0x10a974) *l UNOP (0x163f58) not UNOP (0x163f38) null [15] SVOP (0x163e88) gvsv GV (0x10a98c) *r -e syntax OK nick@Bagpuss [nick]$ perl -MO=Terse -e 'print 0+!($l || $r)' LISTOP (0x164028) leave [1] OP (0x164050) enter COP (0x163fe8) nextstate LISTOP (0x163fa0) print OP (0x163fc8) pushmark BINOP (0x163f78) add [1] SVOP (0x163db0) const IV (0xed2b8) 0 UNOP (0x163f58) not UNOP (0x163f38) null LOGOP (0x10db20) or UNOP (0x163e48) null [15] SVOP (0x163dd0) gvsv GV (0x10a974) *l UNOP (0x163f18) null [15] SVOP (0x163e68) gvsv GV (0x10a98c) *r -e syntax OK For "much" equal to 1 op in total. I think that the answer is "no, do it by hand if it matters that much", doesn't it? This also might be a perl6 question, for a more "serious" -O2 optimiser. Hmm. Would parrot benefit from nand and nor ops? [beware of cross posting when replying] Nicholas Clark -- EMCFT http://www.ccl4.org/~nick/CV.html