Module InferIR__Binop

type t =
| PlusA

(** arithmetic + *)

| PlusPI

(** pointer + integer *)

| MinusA

(** arithmetic - *)

| MinusPI

(** pointer - integer *)

| MinusPP

(** pointer - pointer *)

| Mult

(** * *)

| Div

(** / *)

| Mod

(** % *)

| Shiftlt

(** shift left *)

| Shiftrt

(** shift right *)

| Lt

(** < (arithmetic comparison) *)

| Gt

(** > (arithmetic comparison) *)

| Le

(** <= (arithmetic comparison) *)

| Ge

(** >= (arithmetic comparison) *)

| Eq

(** == (arithmetic comparison) *)

| Ne

(** != (arithmetic comparison) *)

| BAnd

(** bitwise and *)

| BXor

(** exclusive-or *)

| BOr

(** inclusive-or *)

| LAnd

(** logical and. Does not always evaluate both operands. *)

| LOr

(** logical or. Does not always evaluate both operands. *)

Binary operations

include sig ... end
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val injective : t ‑> bool

This function returns true if the operation is injective wrt. each argument: op(e,-) and op(-, e) is injective for all e. The return value false means "don't know".

val is_zero_runit : t ‑> bool

This function returns true if 0 is the right unit of binop. The return value false means "don't know".

val str : InferStdlib.Pp.env ‑> t ‑> string

String representation of a binary operator.