return syms.intType.constType(~intValue(od)); case bool_not: // ! return syms.booleanType.constType(b2i(intValue(od) == 0)); case ifeq: return syms.booleanType.constType(b2i(intValue(od) == 0)); case ifne: return syms.booleanType.constType(b2i(intValue(od) != 0)); case iflt: return syms.booleanType.constType(b2i(intValue(od) < 0)); case ifgt: return syms.booleanType.constType(b2i(intValue(od) > 0)); case ifle: return syms.booleanType.constType(b2i(intValue(od) <= 0)); case ifge: return syms.booleanType.constType(b2i(intValue(od) >= 0));
return syms.intType.constType(~intValue(od)); case bool_not: // ! return syms.booleanType.constType(b2i(intValue(od) == 0)); case ifeq: return syms.booleanType.constType(b2i(intValue(od) == 0)); case ifne: return syms.booleanType.constType(b2i(intValue(od) != 0)); case iflt: return syms.booleanType.constType(b2i(intValue(od) < 0)); case ifgt: return syms.booleanType.constType(b2i(intValue(od) > 0)); case ifle: return syms.booleanType.constType(b2i(intValue(od) <= 0)); case ifge: return syms.booleanType.constType(b2i(intValue(od) >= 0));
return syms.intType.constType(~intValue(od)); case bool_not: // ! return syms.booleanType.constType(b2i(intValue(od) == 0)); case ifeq: return syms.booleanType.constType(b2i(intValue(od) == 0)); case ifne: return syms.booleanType.constType(b2i(intValue(od) != 0)); case iflt: return syms.booleanType.constType(b2i(intValue(od) < 0)); case ifgt: return syms.booleanType.constType(b2i(intValue(od) > 0)); case ifle: return syms.booleanType.constType(b2i(intValue(od) <= 0)); case ifge: return syms.booleanType.constType(b2i(intValue(od) >= 0));
return syms.intType.constType(~intValue(od)); case bool_not: // ! return syms.booleanType.constType(b2i(intValue(od) == 0)); case ifeq: return syms.booleanType.constType(b2i(intValue(od) == 0)); case ifne: return syms.booleanType.constType(b2i(intValue(od) != 0)); case iflt: return syms.booleanType.constType(b2i(intValue(od) < 0)); case ifgt: return syms.booleanType.constType(b2i(intValue(od) > 0)); case ifle: return syms.booleanType.constType(b2i(intValue(od) <= 0)); case ifge: return syms.booleanType.constType(b2i(intValue(od) >= 0));
.constType(intValue(l) & intValue(r)); case bool_and: return syms.booleanType.constType(b2i((intValue(l) & intValue(r)) != 0)); case ior: return (left.hasTag(BOOLEAN) .constType(intValue(l) | intValue(r)); case bool_or: return syms.booleanType.constType(b2i((intValue(l) | intValue(r)) != 0)); case ixor: return (left.hasTag(BOOLEAN) case if_icmpeq: return syms.booleanType.constType( b2i(intValue(l) == intValue(r))); case if_icmpne: return syms.booleanType.constType( b2i(intValue(l) != intValue(r))); case if_icmplt: return syms.booleanType.constType( b2i(intValue(l) < intValue(r))); case if_icmpgt: return syms.booleanType.constType( b2i(intValue(l) > intValue(r))); case if_icmple: return syms.booleanType.constType( b2i(intValue(l) <= intValue(r))); case if_icmpge: return syms.booleanType.constType(
.constType(intValue(l) & intValue(r)); case bool_and: return syms.booleanType.constType(b2i((intValue(l) & intValue(r)) != 0)); case ior: return (left.tag == BOOLEAN .constType(intValue(l) | intValue(r)); case bool_or: return syms.booleanType.constType(b2i((intValue(l) | intValue(r)) != 0)); case ixor: return (left.tag == BOOLEAN case if_icmpeq: return syms.booleanType.constType( b2i(intValue(l) == intValue(r))); case if_icmpne: return syms.booleanType.constType( b2i(intValue(l) != intValue(r))); case if_icmplt: return syms.booleanType.constType( b2i(intValue(l) < intValue(r))); case if_icmpgt: return syms.booleanType.constType( b2i(intValue(l) > intValue(r))); case if_icmple: return syms.booleanType.constType( b2i(intValue(l) <= intValue(r))); case if_icmpge: return syms.booleanType.constType(
.constType(intValue(l) & intValue(r)); case bool_and: return syms.booleanType.constType(b2i((intValue(l) & intValue(r)) != 0)); case ior: return (left.tag == BOOLEAN .constType(intValue(l) | intValue(r)); case bool_or: return syms.booleanType.constType(b2i((intValue(l) | intValue(r)) != 0)); case ixor: return (left.tag == BOOLEAN case if_icmpeq: return syms.booleanType.constType( b2i(intValue(l) == intValue(r))); case if_icmpne: return syms.booleanType.constType( b2i(intValue(l) != intValue(r))); case if_icmplt: return syms.booleanType.constType( b2i(intValue(l) < intValue(r))); case if_icmpgt: return syms.booleanType.constType( b2i(intValue(l) > intValue(r))); case if_icmple: return syms.booleanType.constType( b2i(intValue(l) <= intValue(r))); case if_icmpge: return syms.booleanType.constType(
.constType(intValue(l) & intValue(r)); case bool_and: return syms.booleanType.constType(b2i((intValue(l) & intValue(r)) != 0)); case ior: return (left.hasTag(BOOLEAN) .constType(intValue(l) | intValue(r)); case bool_or: return syms.booleanType.constType(b2i((intValue(l) | intValue(r)) != 0)); case ixor: return (left.hasTag(BOOLEAN) case if_icmpeq: return syms.booleanType.constType( b2i(intValue(l) == intValue(r))); case if_icmpne: return syms.booleanType.constType( b2i(intValue(l) != intValue(r))); case if_icmplt: return syms.booleanType.constType( b2i(intValue(l) < intValue(r))); case if_icmpgt: return syms.booleanType.constType( b2i(intValue(l) > intValue(r))); case if_icmple: return syms.booleanType.constType( b2i(intValue(l) <= intValue(r))); case if_icmpge: return syms.booleanType.constType(