Constraint programming is a general method to solve logic problems, which models the problem as a set of **constraints** (e.g. `0 < x`

, `y > 10`

, `x + 2y = 24`

) then uses a **constraint solver** to find possible solutions (`x = 1 & y = 11`

). Constraint solving is used very often in compilers. This article focuses on compiler **backends** like LLVM which generate assembly from low-level IR (a process called “lowering”). It presents multiple examples of constraint solvers being used with code and goes into great detail, reflecting on the author’s personal experience.

* Constraint solving is also used in the frontend, particularly in type inference (including Hindley-Milner)

You must log in or register to comment.