-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
^
inlining perf regression
#17759
Comments
this does not occur with |
This seems interesting too:
This is on 0.5-RC0 and today's master (works fine on 0.4). Also when including above file from the REPL, the second time around it executes fast. So, it seems only the first compiled method of |
likely an llvm issue? |
Maybe but there are calls to |
^
^
inlining perf regression
I see why this is broken. Simple repro: julia> f(x) = x ^ 3
julia> @code_typed f(1.0)
LambdaInfo for f(::Float64)
:(begin
return $(Expr(:invoke, LambdaInfo for *(::Float64, ::Float64, ::Float64), :(Base.*), :(x), :(x), :(x)))
end::Float64)
julia> @code_llvm f(1.0)
# very long
# correct versions:
julia> @code_typed f(1.0)
LambdaInfo for f(::Float64)
:(begin
return (Base.box)(Base.Float64,(Base.mul_float)((Base.box)(Base.Float64,(Base.mul_float)(x,x)),x))
end::Float64)
julia> @code_llvm f(1.0)
define double @julia_f_68734(double) {
top:
%1 = fmul double %0, %0
%2 = fmul double %1, %0
ret double %2
} |
I've been seeing a few examples of |
required for the inliner to work, since all of the logic for computing edges is supposed to be handle by the inference step fix #17759
required for the inliner to work, since all of the logic for computing edges is supposed to be handle by the inference step fix JuliaLang#17759
This was briefly discussed on users.
The text was updated successfully, but these errors were encountered: