-
-
Notifications
You must be signed in to change notification settings - Fork 5.6k
Closed
Labels
compiler:codegenGeneration of LLVM IR and native codeGeneration of LLVM IR and native codecompiler:llvmFor issues that relate to LLVMFor issues that relate to LLVMperformanceMust go fasterMust go faster
Description
This is similar to #44998, in that LLVM's SLPVectorizer is involved, but I think it's easier to solve by tweaking the codegen for egal:
struct DefaultOr{T}
x::T
default::Bool
end
@eval struct Torture
$((Expr(:(::), Symbol("x$i"), DefaultOr{Float64}) for i = 1:897)...)
end
egal_any(x::Torture, y::Any) = x === y
julia> @time code_llvm(egal_any, Tuple{Torture, Any})
22.034327 seconds (5.48 M allocations: 206.847 MiB, 0.40% gc time, 88.69% compilation time: <1% of which was recompilation)
Metadata
Metadata
Assignees
Labels
compiler:codegenGeneration of LLVM IR and native codeGeneration of LLVM IR and native codecompiler:llvmFor issues that relate to LLVMFor issues that relate to LLVMperformanceMust go fasterMust go faster