diff --git a/mach/proto/ncg/compute.c b/mach/proto/ncg/compute.c index d023fd89..90b7d13f 100644 --- a/mach/proto/ncg/compute.c +++ b/mach/proto/ncg/compute.c @@ -79,6 +79,8 @@ char opdesc[] = { 0, /* EX_HIGHW */ LLDEF, /* EX_INREG */ LLDEF, /* EX_REGVAR */ + LLDEF|RLDEF, /* EX_OR */ + LLDEF|RLDEF, /* EX_AND */ }; string salloc(),strcpy(),strcat(); @@ -290,6 +292,14 @@ result_t compute(node) register node_p node; { assert(leaf1.e_typ == EV_INT && leaf2.e_typ == EV_INT); result.e_v.e_con = leaf1.e_v.e_con - leaf2.e_v.e_con; return(result); + case EX_OR: + assert(leaf1.e_typ == EV_INT && leaf2.e_typ == EV_INT); + result.e_v.e_con = leaf1.e_v.e_con | leaf2.e_v.e_con; + return(result); + case EX_AND: + assert(leaf1.e_typ == EV_INT && leaf2.e_typ == EV_INT); + result.e_v.e_con = leaf1.e_v.e_con & leaf2.e_v.e_con; + return(result); case EX_TIMES: assert(leaf1.e_typ == EV_INT && leaf2.e_typ == EV_INT); result.e_v.e_con = leaf1.e_v.e_con * leaf2.e_v.e_con;