I think this is just a lack of optimization issue. Would you mind filing an issue?
> On Aug 28, 2014, at 10:40 AM, Tim Holy <[email protected]> wrote: > > I've been noticing the same problem recently. This happens on 0.3, too. > > --Tim > >> On Thursday, August 28, 2014 06:30:19 AM Simon Kornblith wrote: >> It doesn't look like the first snippet is inlining hash(p, zero(Uint)) to >> me. Rather, it looks like that code isn't specialized on the input >> argument. There's still only one call outside of the call to jl_box_uint64 >> and no other work being done, so it can't really be calling hash twice, and >> it's making the call via jl_apply_generic rather than directly. I'm not >> sure why it wouldn't be specialized, but it seems likely to be an issue >> with @code_llvm rather than the compiler. >> >> Simon >> >>> On Thursday, August 28, 2014 6:21:17 AM UTC-4, Steven G. Johnson wrote: >>> Interesting. Defining foo(x, y=0) is supposed to be equivalent to >>> defining foo(x, y) and foo(x)=foo(x,0), but it looks like the latter form >>> triggers inlining and the former does not. The latter form is more >>> common in older Julia code because the former syntax was only added in >>> Julia 0.2. >>> >>> However, I can't reproduce it on simpler examples; in most cases that I >>> try, the two definition forms produce the same code. >
