Constant propagation works amazingly well in Julia, as I found out when I tried calling f
from within a function. There’s no need for StaticNumbers
here. The below is enough.
const CODES = (2, 3, 5, 7, 11)
const RCODES = reverse(CODES)
f(x) = 0
f(x, y, ys...) = x == y ? 1 + length(ys) : f(x, ys...)
findcode3(x) = f(x, RCODES...)
@code_llvm findcode3(3)