swh:1:snp:a72e953ecd624a7df6e6196bbdd05851996c5e40
- HEAD
- refs/branches/jn/codeinfo-lineno
- refs/heads/KristofferC-patch-1
- refs/heads/KristofferC-patch-2
- refs/heads/KristofferC-patch-3
- refs/heads/KristofferC-patch-4
- refs/heads/KristofferC-patch-5
- refs/heads/KristofferC-patch-6
- refs/heads/KristofferC-patch-7
- refs/heads/SubtypeError
- refs/heads/aa-tcp-write-opt-18
- refs/heads/aa/build-llvm-unwind
- refs/heads/aa/freebsd-llvm-libunwind
- refs/heads/aa/test-throws-nothing
- refs/heads/add-buffer-type
- refs/heads/add-buffer-type2
- refs/heads/adnan-alhomssi-aa-export-numstacks-counter
- refs/heads/adr/snapshot
- refs/heads/ajf/arrays-are-tables
- refs/heads/ajf/broadcast-dicts
- refs/heads/ajf/cartesianrange-array
- refs/heads/ajf/default-length-definition
- refs/heads/ajf/deprecatemultivaluenonscalarindexedassignment
- refs/heads/ajf/dict-iterate-values
- refs/heads/ajf/mappedarray
- refs/heads/ajf/pairs2
- refs/heads/ajf/propage_inbounds_broadcast
- refs/heads/ajf/skipmissing-length
- refs/heads/ajf/strides-trait
- refs/heads/amp-ref
- refs/heads/anj/map
- refs/heads/asan_tasks_eh
- refs/heads/avi/1.11-precompile-ext-absint
- refs/heads/avi/46713
- refs/heads/avi/47137-again
- refs/heads/avi/52991
- refs/heads/avi/EASROA
- refs/heads/avi/async-completion
- refs/heads/avi/bailout-effects
- refs/heads/avi/bailoutintrinsics
- refs/heads/avi/boundscheck-docs
- refs/heads/avi/boundserror
- refs/heads/avi/callinfo-effects
- refs/heads/avi/codegen-custom-lookup-oc
- refs/heads/avi/configconstprop
- refs/heads/avi/constType-Union
- refs/heads/avi/early_const_prop
- refs/heads/avi/effects-override-bittype
- refs/heads/avi/effects_constprop
- refs/heads/avi/elim-wasterful-constprop
- refs/heads/avi/follow-52415
- refs/heads/avi/gpucompiler-384
- refs/heads/avi/hunt-type-instabilities
- refs/heads/avi/inbounds-nothrow
- refs/heads/avi/infer_effects
- refs/heads/avi/infresult_iterator
- refs/heads/avi/inline_string
- refs/heads/avi/inlining-policy
- refs/heads/avi/inlining_cost
- refs/heads/avi/interval
- refs/heads/avi/jet413
- refs/heads/avi/kwinline
- refs/heads/avi/moreeffects
- refs/heads/avi/multisroa
- refs/heads/avi/mutablephi
- refs/heads/avi/optlifetime
- refs/heads/avi/plugin8
- refs/heads/avi/plugin8-2
- refs/heads/avi/remove-throw-block-unopt
- refs/heads/avi/return_type-max_methods
- refs/heads/avi/rm-allow_abstract
- refs/heads/avi/temp-methodinstance-to-invoke
- refs/heads/avi/turn-on-aliasedfieldanalysis
- refs/heads/avi/typed_hvcat-return_type
- refs/heads/avi/typelattice
- refs/heads/avi/typetypeinf
- refs/heads/avi/undef
- refs/heads/backport-1.1.0
- refs/heads/backports-release-1.1
- refs/heads/backports-release-1.10
- refs/heads/backports-release-1.11
- refs/heads/backports-release-1.6
- refs/heads/backports-release-1.8
- refs/heads/breakmore
- refs/heads/caf/bump-juliasyntax-0.4.7
- refs/heads/cjf/disallow-infix-macros
- refs/heads/cjf/fpe-exceptions
- refs/heads/cjf/hide-in-stacktrace-meta
- refs/heads/cjf/hide-stacktrace-frames
- refs/heads/cjf/internal-properties
- refs/heads/cjf/logging-custom-levels
- refs/heads/cjf/logging-custom-levels-wip
- refs/heads/cjf/remove-loaderror
- refs/heads/cjf/toplevel-backtraces
- refs/heads/cjf/toplevel-backtraces-via-interpframe-stack
- refs/heads/cjh/doxygen
- refs/heads/cjh/fix-4774
- refs/heads/cjh/parallel-bench
- refs/heads/ct/julia-opt-zone
- refs/heads/curry
- refs/heads/cv/abstractstring-eq
- refs/heads/cv/arm-hotfix
- refs/heads/cv/broadcast-steprange-timetype
- refs/heads/cv/char-code-reservation
- refs/heads/cv/dates-replace
- refs/heads/cv/fix-redundant-dict-error
- refs/heads/cv/generator-indexing
- refs/heads/cv/invalid-rational
- refs/heads/cv/namedtuple-pair
- refs/heads/cv/no-color-force-color
- refs/heads/da/devcontainer-update
- refs/heads/dcn-1.9-with-mem-pressure-callback
- refs/heads/dcn-3-color
- refs/heads/dcn-canonicalize-callable-names
- refs/heads/dcn-check-oldest-object-in-size-class
- refs/heads/dcn-compiler-obj-pools
- refs/heads/dcn-count-stack-bytes
- refs/heads/dcn-gc-interface
- refs/heads/dcn-gc-paper-1.9-branch
- refs/heads/dcn-gc-paper-dev-branch
- refs/heads/dcn-heap-size-hint-env
- refs/heads/dcn-null-out-gc-slots
- refs/heads/dcn-page-profiler-more-verbose-types
- refs/heads/dcn/docs
- refs/heads/dcn/mq
- refs/heads/dk/banded
- refs/heads/dk/blaspromo
- refs/heads/dk/choleskypivot
- refs/heads/dk/hvcat_scaling_number
- refs/heads/dk/missing
- refs/heads/dk/muladdmul
- refs/heads/dk/stable_div
- refs/heads/dont-tabcomplete-internals
- refs/heads/dpa/base-prompt-public-api
- refs/heads/dpa/ci-environment-variable
- refs/heads/dpa/deprecation_exec
- refs/heads/dpa/diagnostics-interactiveutils
- refs/heads/dpa/infodump-interactiveutils
- refs/heads/dpa/more-public-task-local-storage-methods
- refs/heads/dpa/new-global-load-path-entry
- refs/heads/dpa/parentmodule
- refs/heads/dpa/pidfile-windows-eacces
- refs/heads/dpa/sparsearrays
- refs/heads/dpa/versioninfo-official-release
- refs/heads/fe/--threads-propagate
- refs/heads/fe/-P
- refs/heads/fe/active-depot
- refs/heads/fe/backport-31967
- refs/heads/fe/deprecate-logging
- refs/heads/fe/depwarn-default
- refs/heads/fe/doctest-fix
- refs/heads/fe/errorexception
- refs/heads/fe/helpmode-stdout
- refs/heads/fe/hermsym-matrixfunc
- refs/heads/fe/integer-construction
- refs/heads/fe/misc
- refs/heads/fe/nvr
- refs/heads/fe/repr-versioninfo
- refs/heads/fe/rm-artifacts
- refs/heads/fe/ssh
- refs/heads/fe/structured-matrix-constructor
- refs/heads/fe/version-v2
- refs/heads/fix9475
- refs/heads/gb/analyzer-fun
- refs/heads/gb/branch-bits
- refs/heads/gb/gc-correct-constraint
- refs/heads/gb/gc-other-impl
- refs/heads/gb/gc-rever
- refs/heads/gb/hashtable_typelist
- refs/heads/gb/libfuncattrs
- refs/heads/gb/llvmpasses-dep
- refs/heads/gb/memcmo
- refs/heads/gb/memory-extra-check
- refs/heads/gb/mi-alias
- refs/heads/gb/pipeline-fun
- refs/heads/gb/rpath-fun
- refs/heads/gb/small-image
- refs/heads/gb/small-image2
- refs/heads/gb/stack-protect
- refs/heads/gb/vecalign
- refs/heads/gpu-broadcast
- refs/heads/id_norm
- refs/heads/jb/06_compiler_perf
- refs/heads/jb/39698
- refs/heads/jb/AbstractOneTo
- refs/heads/jb/IdUnitRangeparent
- refs/heads/jb/allowoverwrite
- refs/heads/jb/analyzevars
- refs/heads/jb/arraygcperf
- refs/heads/jb/badidentifierstart
- refs/heads/jb/bidi16
- refs/heads/jb/cg_temp
- refs/heads/jb/codeinfostuff
- refs/heads/jb/copyanonfns
- refs/heads/jb/copyfile
- refs/heads/jb/diagblockdiagonal
- refs/heads/jb/dotcolon
- refs/heads/jb/fastercat
- refs/heads/jb/fix14106
- refs/heads/jb/fix29501
- refs/heads/jb/fix38902
- refs/heads/jb/fix39834
- refs/heads/jb/fix47318
- refs/heads/jb/fix49318
- refs/heads/jb/fix52120
- refs/heads/jb/freethreadstate
- refs/heads/jb/gotofromtry
- refs/heads/jb/implicitssa
- refs/heads/jb/interpreter_opt
- refs/heads/jb/iowriteperf
- refs/heads/jb/jr/tuplelattice
- refs/heads/jb/latency10
- refs/heads/jb/latency12
- refs/heads/jb/latency3
- refs/heads/jb/latency33615
- refs/heads/jb/latency_experiments
- refs/heads/jb/limitedmethods
- refs/heads/jb/macrostuff
- refs/heads/jb/modprefixshow
- refs/heads/jb/news111
- refs/heads/jb/novaoverride
- refs/heads/jb/nullableget
- refs/heads/jb/open3
- refs/heads/jb/quietparams
- refs/heads/jb/r5rs
- refs/heads/jb/revinlinethresh
- refs/heads/jb/ruleinlinecost
- refs/heads/jb/serializeperf
- refs/heads/jb/shortstrlen
- refs/heads/jb/silentparams
- refs/heads/jb/simpler_intersection2
- refs/heads/jb/sjkelly-sjk/precomp_trace2
- refs/heads/jb/steprangegetindex
- refs/heads/jb/stripmeta
- refs/heads/jb/sysimgLogging
- refs/heads/jb/tasksize
- refs/heads/jb/taskwaitswitch
- refs/heads/jb/threadedregion-test
- refs/heads/jb/typedefIR2
- refs/heads/jb/typegetfield
- refs/heads/jb/typemap0
- refs/heads/jb/varlocs
- refs/heads/jcb/arrayviews
- refs/heads/jcb/evalmacrocallthrows
- refs/heads/jcb/juliarepl
- refs/heads/jcb/simdmdloop
- refs/heads/jh/setops
- refs/heads/jishnub/abstractqsimilar
- refs/heads/jishnub/blocktridiagonalindexing
- refs/heads/jishnub/getindexint
- refs/heads/jishnub/ntupleshow
- refs/heads/jishnub/onetopromoterule
- refs/heads/jishnub/oopmuldisambiguate
- refs/heads/jishnub/rangebroadcastambiguity
- refs/heads/jishnub/rangezero
- refs/heads/jishnub/tricopyto
- refs/heads/jishnub/twiceprecisionzero
- refs/heads/jishnub/upperlowertriangularfn
- refs/heads/jmw/null-syntax
- refs/heads/jn/26512
- refs/heads/jn/29872-compare
- refs/heads/jn/34886
- refs/heads/jn/37349
- refs/heads/jn/StructRet_abi
- refs/heads/jn/Tuple-applytype-bottom
- refs/heads/jn/array-inbounds-audit
- refs/heads/jn/atomic-modify-opt
- refs/heads/jn/avi/noopt-interp-irinterp-compare
- refs/heads/jn/backedge-fixup
- refs/heads/jn/backports-release-1.4
- refs/heads/jn/better-broadcast-inlining
- refs/heads/jn/bigfloat-mem
- refs/heads/jn/broadcast-some-more
- refs/heads/jn/check_sadd
- refs/heads/jn/compile-all-0.6
- refs/heads/jn/compile_all_generic_box
- refs/heads/jn/drop-inexact
- refs/heads/jn/exposed-hygiene
- refs/heads/jn/fix-macro-scope-design
- refs/heads/jn/fix34159
- refs/heads/jn/gc-pool-lazy
- refs/heads/jn/generalized-LOAD_PATH-compilecache
- refs/heads/jn/have_fma_sysimg
- refs/heads/jn/iddict
- refs/heads/jn/import-strtod
- refs/heads/jn/in-isequal
- refs/heads/jn/iocolor
- refs/heads/jn/iocolor2
- refs/heads/jn/ircode-memory
- refs/heads/jn/isdefined-safely
- refs/heads/jn/iterate
- refs/heads/jn/jb-subtype
- refs/heads/jn/jb-subtype-const-type-fix
- refs/heads/jn/jb-subtype-faster-isa-Type
- refs/heads/jn/jlinterpreter
- refs/heads/jn/kf-linecolstr
- refs/heads/jn/kf/iterate-wip
- refs/heads/jn/kf/newlocs
- refs/heads/jn/lazydoc
- refs/heads/jn/license-committers
- refs/heads/jn/llvmcall2
- refs/heads/jn/localize-multiversioning
- refs/heads/jn/memoize-freevars
- refs/heads/jn/methmatch-cache
- refs/heads/jn/mixed-equal
- refs/heads/jn/ml-match-opt
- refs/heads/jn/ml-matches-leaf-cache2
- refs/heads/jn/modulecoalescing
- refs/heads/jn/more-faster-typeset
- refs/heads/jn/more-inline-costs
- refs/heads/jn/msvclink
- refs/heads/jn/new-stdlib-script-docs
- refs/heads/jn/newir-test-fixes
- refs/heads/jn/noinline-structs
- refs/heads/jn/opt-makefile-compile-take2
- refs/heads/jn/release0.6-26833
- refs/heads/jn/requirenewmodule
- refs/heads/jn/simple-scope
- refs/heads/jn/slot-type-infer-optimize
- refs/heads/jn/steprange
- refs/heads/jn/subtype-sig-equal
- refs/heads/jn/test-warn-repr
- refs/heads/jn/threading
- refs/heads/jn/tune_whos
- refs/heads/jn/tuplecc
- refs/heads/jn/type-construction-normalization
- refs/heads/jn/typeinfo_arg
- refs/heads/jn/typename_hide_null_svec
- refs/heads/jn/undeffield-codegen-opt
- refs/heads/jn/unhandled_exception_handler
- refs/heads/jn/union-bits-layout
- refs/heads/jn/update-precompile-heuristic
- refs/heads/jn/widen_method_matchs
- refs/heads/jq-19-backport
- refs/heads/jq-dense-strings
- refs/heads/jq-tcp-socket-keepalive
- refs/heads/jq/40303
- refs/heads/jq/buffer
- refs/heads/jq/bufferall
- refs/heads/jr/betterspoof
- refs/heads/jr/cinfoworldboundstmp
- refs/heads/jr/compiledebug
- refs/heads/jr/moarpartialtuple
- refs/heads/jr/ptupleprop
- refs/heads/jr/tmp2
- refs/heads/jr/tupleconst
- refs/heads/jr/tuplekindtypefix
- refs/heads/jr/tuplelatticeold
- refs/heads/jr/wip
- refs/heads/julia-in-julia
- refs/heads/kc/1.9.0-beta3
- refs/heads/kc/JULIA_ENV
- refs/heads/kc/TM
- refs/heads/kc/arg_usings
- refs/heads/kc/artifact_str_world
- refs/heads/kc/assume_unchanged_loading
- refs/heads/kc/backport_gcc10
- refs/heads/kc/backport_vtj
- refs/heads/kc/backporter
- refs/heads/kc/backports-release-1.10
- refs/heads/kc/build_stdlib_env
- refs/heads/kc/cache_precompile
- refs/heads/kc/cglobal
- refs/heads/kc/codeloading2.0
- refs/heads/kc/complete_num
- refs/heads/kc/core_compiler_tracy
- refs/heads/kc/creating_packages_revert
- refs/heads/kc/debug_mode
- refs/heads/kc/debug_mode2
- refs/heads/kc/debug_precompile
- refs/heads/kc/debug_release-1.9
- refs/heads/kc/dir_dlload
- refs/heads/kc/doctest_meta2
- refs/heads/kc/doctests_CI
- refs/heads/kc/exception_trait
- refs/heads/kc/excise_libgit2_v2
- refs/heads/kc/extension
- refs/heads/kc/fix_init
- refs/heads/kc/fix_print_type
- refs/heads/kc/glue_modules
- refs/heads/kc/immut_dict
- refs/heads/kc/inline_print
- refs/heads/kc/inval
- refs/heads/kc/llvm-opt-zone
- refs/heads/kc/llvm-opt-zone2
- refs/heads/kc/llvm_pass_trac
- refs/heads/kc/loading_debug_error
- refs/heads/kc/loading_stuff
- refs/heads/kc/move_dates_anub
- refs/heads/kc/n_triggers
- refs/heads/kc/perf_ident
- refs/heads/kc/pidlock_repl_history
- refs/heads/kc/pkg3_patch
- refs/heads/kc/pkgdir_fix
- refs/heads/kc/pkgstdlib
- refs/heads/kc/precompile_overhead
- refs/heads/kc/precompile_with_pkg3
- refs/heads/kc/repl_fast
- refs/heads/kc/reuse_compile
- refs/heads/kc/reuse_precompile
- refs/heads/kc/seed_fast
- refs/heads/kc/set_threads
- refs/heads/kc/so_long_and_thanks_for_the_packages
- refs/heads/kc/sprint_displaysize
- refs/heads/kc/stat_reductions
- refs/heads/kc/stdlib
- refs/heads/kc/stdlib_markdown
- refs/heads/kc/stdlib_path_internal
- refs/heads/kc/stdlib_printing
- refs/heads/kc/str_lit_cont
- refs/heads/kc/substr_toml
- refs/heads/kc/substring_parse
- refs/heads/kc/test
- refs/heads/kc/test_inline
- refs/heads/kc/toml_loading
- refs/heads/kc/tracy_plot
- refs/heads/kc/tuple_afoldl
- refs/heads/kc/type_cache_insert_default
- refs/heads/kc/unused
- refs/heads/kc/upgradable_stdlibs
- refs/heads/kc/warn_using
- refs/heads/kc/was
- refs/heads/kc/weak_deps_2
- refs/heads/kc/whatdocstoshow
- refs/heads/kc/wip_stacktraces
- refs/heads/kc/zone
- refs/heads/kf/53515
- refs/heads/kf/anysparamlattice
- refs/heads/kf/asan2
- refs/heads/kf/bbmsan
- refs/heads/kf/cedarwip
- refs/heads/kf/cfgwip
- refs/heads/kf/circshift
- refs/heads/kf/closestcandidates
- refs/heads/kf/codegen
- refs/heads/kf/codeinstwip
- refs/heads/kf/codetypedconst
- refs/heads/kf/compiler_wip_dont_look
- refs/heads/kf/compilerperfwip
- refs/heads/kf/customlattice
- refs/heads/kf/cvppipeline
- refs/heads/kf/cwip
- refs/heads/kf/cyclepostorder
- refs/heads/kf/effectpreconds
- refs/heads/kf/erroroptwip
- refs/heads/kf/expzerocase
- refs/heads/kf/fastsysimg
- refs/heads/kf/fieldtypetfuncunion
- refs/heads/kf/filestdio
- refs/heads/kf/forcedartemp
- refs/heads/kf/gallium
- refs/heads/kf/getfieldlowering
- refs/heads/kf/heappromote
- refs/heads/kf/hooks3
- refs/heads/kf/ia/conditionalbug
- refs/heads/kf/incomplete2
- refs/heads/kf/incomplete_type
- refs/heads/kf/inferencefaster
- refs/heads/kf/interphook
- refs/heads/kf/iter
- refs/heads/kf/iteratewip
- refs/heads/kf/jb/rm_deps_3
- refs/heads/kf/jscall
- refs/heads/kf/loosenhardlimit
- refs/heads/kf/magiccompilerdustforceleste2
- refs/heads/kf/magiccompilerdustforceleste3
- refs/heads/kf/magiccompilerdustforceleste4
- refs/heads/kf/mimedata
- refs/heads/kf/mmap
- refs/heads/kf/multiany
- refs/heads/kf/newclidrivers
- refs/heads/kf/newdinfo
- refs/heads/kf/notworkingbadwip
- refs/heads/kf/opaque_closures2
- refs/heads/kf/permuteddimssimilar
- refs/heads/kf/reclimit
- refs/heads/kf/refactortodo
- refs/heads/kf/replfixes
- refs/heads/kf/rmwatchers
- refs/heads/kf/sanitizermake
- refs/heads/kf/stdioredirect
- refs/heads/kf/switchwip
- refs/heads/kf/sysimglinkopenlibm
- refs/heads/kf/topush
- refs/heads/kf/tpu
- refs/heads/kf/tpu2
- refs/heads/kf/tpu3
- refs/heads/kf/typeoftypes
- refs/heads/kf/typeofvalid
- refs/heads/kf/unionpenalties2
- refs/heads/kf/unionsplit2
- refs/heads/kf/uvint32
- refs/heads/kf/wasm
- refs/heads/kf/wasm2
- refs/heads/kf/wasm3
- refs/heads/kf/wasm4
- refs/heads/kf/wine-check_ws
- refs/heads/kf/winefix2
- refs/heads/kf/winfix
- refs/heads/kf/wip
- refs/heads/kf/wrapintops
- refs/heads/kf/xlademo
- refs/heads/kp-improve-rl
- refs/heads/kp/disable-gc-atexit
- refs/heads/kp/fix-53325
- refs/heads/kp/old_partr
- refs/heads/kp/schedtask
- refs/heads/ksh/pkgtestset
- refs/heads/ksh/sockdoc
- refs/heads/ksh/transcode
- refs/heads/lh/bump-jls
- refs/heads/lh/dict-token-api
- refs/heads/lh/fix-typos
- refs/heads/lh/fix-typos-base
- refs/heads/lh/prepared-comparisons
- refs/heads/lh/stacktrace-reverse-print
- refs/heads/lh/typos-fixup-base
- refs/heads/lh/using-as
- refs/heads/master
- refs/heads/mb/I,broadcast
- refs/heads/mb/aliasscopebroadcast
- refs/heads/mb/inbounds-expression
- refs/heads/mb/outline-broadcast
- refs/heads/mb/recursive-cat
- refs/heads/mb/self-aliasing-broadcasts
- refs/heads/mb/thisshouldhaveoccurredtome
- refs/heads/mb/transpose
- refs/heads/mb/true28866
- refs/heads/mb/viewdefault
- refs/heads/mh/circular_types
- refs/heads/mh/ctor-inferability
- refs/heads/mh/fix-38327
- refs/heads/mh/fix-38364
- refs/heads/mh/fix-50548
- refs/heads/mh/fix-50617
- refs/heads/mh/improve-tmeet-for-vararg-partialstruct
- refs/heads/mh/patch_rdims
- refs/heads/mh/rework_apply
- refs/heads/mh/totuple_builtin
- refs/heads/mji/zygote
- refs/heads/mp/ssh-key-debug
- refs/heads/nhd-alloc-profiler-types+reasons
- refs/heads/nhd-apply-generic-stack-args
- refs/heads/nhd-channel-funcs-nospecialize
- refs/heads/nhd-fix-typo
- refs/heads/nhd-getindex-propagate_inbounds
- refs/heads/nhd-heap-snapshot-sampling-3
- refs/heads/nhd-parse-type
- refs/heads/nhd-test_logs-kwargs
- refs/heads/nhd/REPL-completions-usings
- refs/heads/nhd/names-usings
- refs/heads/nl/Dict
- refs/heads/nl/broadcast2
- refs/heads/nl/cat
- refs/heads/nl/length
- refs/heads/nl/mapreducedim
- refs/heads/ob/cttx
- refs/heads/ob/rref
- refs/heads/ob/stackmaps
- refs/heads/origin/kf/ccsisdefined
- refs/heads/os/better-givens
- refs/heads/oscardssmith-exhaustive-Float160-tests
- refs/heads/pc/codeinfo-args
- refs/heads/pc/codlayer8
- refs/heads/pc/gm-stack
- refs/heads/pc/more-licm
- refs/heads/pc/reoptimize
- refs/heads/pc/sleep
- refs/heads/pc/zone
- refs/heads/pepijndevos-constpropcrimes
- refs/heads/pop-abstractset
- refs/heads/pv-alloc-profile-wrap-pool-alloc
- refs/heads/release-0.1
- refs/heads/release-0.2
- refs/heads/release-0.3
- refs/heads/release-0.4
- refs/heads/release-0.5
- refs/heads/release-0.6
- refs/heads/release-0.7
- refs/heads/release-1.0
- refs/heads/release-1.1
- refs/heads/release-1.10
- refs/heads/release-1.11
- refs/heads/release-1.2
- refs/heads/release-1.3
- refs/heads/release-1.4
- refs/heads/release-1.5
- refs/heads/release-1.6
- refs/heads/release-1.7
- refs/heads/release-1.8
- refs/heads/release-1.9
- refs/heads/revert-22049-kf/memcpyopt
- refs/heads/revert-26854-kc/bump_pkg3_6
- refs/heads/revert-28319-kc/precompiler_build2
- refs/heads/revert-29494-kf/uncolon_recursion
- refs/heads/revert-37410-slurp_assignment
- refs/heads/revert-44205-patch-1
- refs/heads/revert-45153-heaphoist-fix
- refs/heads/revert-45677-revert-45195-vc/llvm_14.0.2
- refs/heads/revert-50466-dcn/fix-50419
- refs/heads/revert-52003-revert-29919-sb/reduce-empty
- refs/heads/revert-52086-jn/sort-nonvector-collect
- refs/heads/rf/Bit
- refs/heads/rf/broaden-hash
- refs/heads/rf/conv-str-regex
- refs/heads/rf/defaults
- refs/heads/rf/digits-unsigned-nonrecur
- refs/heads/rf/iter-access
- refs/heads/rf/merge-iter
- refs/heads/rf/ndigits-bases
- refs/heads/rf/pure-push
- refs/heads/rf/pure-push-iocontext
- refs/heads/rf/rand-distrib
- refs/heads/rf/rand-f16-shift
- refs/heads/rf/rand-same-same
- refs/heads/rf/rand/default_rng_dispatch
- refs/heads/rf/rand/hash-seed
- refs/heads/rf/randn-bigfloat
- refs/heads/rf/randn-fillarray
- refs/heads/rf/randperm-ndl
- refs/heads/rf/regex-partial
- refs/heads/rf/regex-testset
- refs/heads/rf/repl/simplify
- refs/heads/rf/repl/switch-mode
- refs/heads/rf/seed-rng
- refs/heads/rf/show/sorted
- refs/heads/rf/typed-hash
- refs/heads/rf/union-immutable-set
- refs/heads/rf/unmerge-merge
- refs/heads/rf/xoshiro/randn
- refs/heads/rf/zeros-bang
- refs/heads/sb/accumulate
- refs/heads/sb/float-div
- refs/heads/sb/libgit2/peel
- refs/heads/sb/reduce-and
- refs/heads/sb/sigfpe2
- refs/heads/sb/task-fenv
- refs/heads/sb/test-scope
- refs/heads/sb/tmstruct-utc
- refs/heads/sds/codegen_globals_wip
- refs/heads/sds/eachindex
- refs/heads/sds/extended_slurp2
- refs/heads/sds/fix_hash_factorization
- refs/heads/sds/inline_bindings
- refs/heads/sds/invalid_argument
- refs/heads/sds/ir_indent
- refs/heads/sds/iter_cartesian
- refs/heads/sds/less_demangle
- refs/heads/sds/named_opaque
- refs/heads/sds/nonstandard_expr_printing
- refs/heads/sds/prop_destruct_macroexpand
- refs/heads/sds/repl_paste
- refs/heads/sds/shell_complete
- refs/heads/sds/timestimes
- refs/heads/sds/tkf/type-capturing
- refs/heads/sds/typedglobals2
- refs/heads/sds/unesc_backslash_cmd
- refs/heads/sf/DO_NOT_DELETE_THIS_BRANCH_unbuildable_commits_test
- refs/heads/sf/altered_treehashes
- refs/heads/sf/armv7l_fixes
- refs/heads/sf/cedar
- refs/heads/sf/cedar2
- refs/heads/sf/core_o_rama
- refs/heads/sf/lazy_jlls
- refs/heads/sf/no_more_base_blas
- refs/heads/sf/patchelf_builddir_not_srccache
- refs/heads/sf/phi_node_replacement
- refs/heads/sf/simplify_threading_check
- refs/heads/sgj/Test.GenericDimensionful
- refs/heads/sgj/combiningchardisplay
- refs/heads/sgj/displaydigits
- refs/heads/sgj/hess_eig
- refs/heads/sgj/iteratedfunction
- refs/heads/sgj/mapreduce_pairwise
- refs/heads/sgj/no_Lm_start
- refs/heads/shell_mode_windows
- refs/heads/show-container-type
- refs/heads/sjk/spqr
- refs/heads/sk/debuginfo=none
- refs/heads/sk/hash_uint
- refs/heads/sk/highlander.alt
- refs/heads/sk/highlander.alt1
- refs/heads/sk/highlander.alt2
- refs/heads/sk/jl_rng_split-comment
- refs/heads/sk/libgit2-ssh-network-options
- refs/heads/sk/newchar
- refs/heads/sk/precompile-blacklist
- refs/heads/sk/stringstate
- refs/heads/sk/unzip
- refs/heads/sk/vendored-packages
- refs/heads/sk/void
- refs/heads/sk/winpaths
- refs/heads/sort_readdir
- refs/heads/srp/repl-undo
- refs/heads/staging
- refs/heads/stevengj-patch-1
- refs/heads/stevengj-patch-2
- refs/heads/stevengj-patch-3
- refs/heads/stevengj-patch-5
- refs/heads/tan/readdlm2
- refs/heads/tb/avoid_oom
- refs/heads/tb/codegen-norecursion
- refs/heads/tb/cuda
- refs/heads/tb/debug_intrinsics
- refs/heads/tb/dinfo_abspath
- refs/heads/tb/excstack_without_handler_backport
- refs/heads/tb/features
- refs/heads/tb/generator_error
- refs/heads/tb/have_fminmax
- refs/heads/tb/inference_hooks
- refs/heads/tb/ircompact_ssavalue_render
- refs/heads/tb/llvm_type_ctor
- refs/heads/tb/map!_boundschecks
- refs/heads/tb/method_lookup_assertion
- refs/heads/tb/pmb_test
- refs/heads/tb/pointerref_addrspace
- refs/heads/tb/poison
- refs/heads/tb/riscv
- refs/heads/tb/strip_as
- refs/heads/tb/task_debug_build
- refs/heads/tb/task_switch_hook
- refs/heads/tb/tdma
- refs/heads/tb/tpu
- refs/heads/teh-vc/serialize_partial_rebase
- refs/heads/teh/bcast_range
- refs/heads/teh/cache_native
- refs/heads/teh/checkindex_traits
- refs/heads/teh/doc_skip_warn
- refs/heads/teh/make_backref_just_visited
- refs/heads/teh/minmax_isless
- refs/heads/teh/pctools
- refs/heads/teh/serialize_partial_recache
- refs/heads/teh/shareindexes
- refs/heads/teh/tuple_limit
- refs/heads/teh/unwrap_isequal
- refs/heads/teh/valgrind-codegen-suppress
- refs/heads/tk/geev
- refs/heads/tkf/jltapir-pr
- refs/heads/topolarity-ct/macroexpand-no-toplevel-recursion
- refs/heads/v1.0
- refs/heads/vc-gb/pc/sleep
- refs/heads/vc/TTLI
- refs/heads/vc/aliasscopes
- refs/heads/vc/amdas
- refs/heads/vc/backport_threadsafety
- refs/heads/vc/bump_llvm
- refs/heads/vc/ccall_safe_gc
- refs/heads/vc/compiler_instance_v2
- refs/heads/vc/dsweep
- refs/heads/vc/dynamicdomtree
- refs/heads/vc/eabi_half
- refs/heads/vc/excise_random
- refs/heads/vc/external_functions_rebase
- refs/heads/vc/fattr_pgcstack
- refs/heads/vc/fixthreadswitching
- refs/heads/vc/float128
- refs/heads/vc/float128_basic
- refs/heads/vc/float16_intrinsics
- refs/heads/vc/gdb-pp
- refs/heads/vc/hwloc
- refs/heads/vc/instrumentations
- refs/heads/vc/int128_atomics
- refs/heads/vc/ittapi_integration
- refs/heads/vc/julia_cong
- refs/heads/vc/julia_vec_shm
- refs/heads/vc/libffi
- refs/heads/vc/libuv_lock
- refs/heads/vc/licm
- refs/heads/vc/llvm-11-svm-back
- refs/heads/vc/llvm-dialects
- refs/heads/vc/llvm11_debug
- refs/heads/vc/llvm11again
- refs/heads/vc/llvm8
- refs/heads/vc/llvm_undef
- refs/heads/vc/loop-unroll
- refs/heads/vc/mlir
- refs/heads/vc/no_copy_stacks
- refs/heads/vc/pappa_demo
- refs/heads/vc/pir
- refs/heads/vc/ppc-llvm6
- refs/heads/vc/ppc_fixes
- refs/heads/vc/ppc_llvm9_revert
- refs/heads/vc/ppc_patch
- refs/heads/vc/ppc_unix_signals
- refs/heads/vc/ppc_yield
- refs/heads/vc/pragmas
- refs/heads/vc/preload_zlib
- refs/heads/vc/remove_track_allocations
- refs/heads/vc/restored-1.0.1
- refs/heads/vc/round_even
- refs/heads/vc/rv_passes
- refs/heads/vc/smallints
- refs/heads/vc/tapir
- refs/heads/vc/tapir2_rts
- refs/heads/vc/tapir3-codegen-chi
- refs/heads/vc/tapir_build
- refs/heads/vc/tomlcc
- refs/heads/vc/tsan_nort
- refs/heads/vc/uring
- refs/heads/vc/vsts
- refs/heads/vc/wasm
- refs/heads/vc/wasm2
- refs/heads/vc/weakref_tasks
- refs/heads/vc/win_poolalignment
- refs/heads/vc/ws
- refs/heads/vc/x86low
- refs/heads/vc/yhls/dynamicdomtree
- refs/heads/vs/SparseArrays-bump-ss7.5.1
- refs/heads/vs/rm-openlibm
- refs/heads/yyc/arm/crc32c
- refs/heads/yyc/arm/fenv-0.5
- refs/heads/yyc/bigint
- refs/heads/yyc/codegen/eh
- refs/heads/yyc/codegen/local-push
- refs/heads/yyc/codegen/no-safepoint
- refs/heads/yyc/codegen/wb2
- refs/heads/yyc/dft_split
- refs/heads/yyc/dftnew_rebase
- refs/heads/yyc/gc-alloc
- refs/heads/yyc/gc-debug-env
- refs/heads/yyc/gc/safepoint-rt
- refs/heads/yyc/gc/thread-DO-NOT-merge
- refs/heads/yyc/less-getfield
- refs/heads/yyc/ovldot
- refs/heads/yyc/test/release-0.6
- refs/heads/yyc/tests/appveyor
- refs/heads/yyc/tests/arm
- refs/heads/yyc/tests/llvm39
- refs/heads/yyc/tests/master
- refs/heads/yyc/travis-test
- refs/heads/yyc/typeinf/egal
- refs/heads/yyc/typeinf/pure
- refs/heads/zierenberg-master
- refs/remotes/KC/kc/error_msgs
- refs/remotes/origin/avi/validwidenconst
- refs/remotes/origin/backports-release-1.6
- refs/remotes/origin/dcn-canonicalize-callable-names
- refs/remotes/origin/dcn/adjust-n-gc-threads
- refs/remotes/origin/sgj/readuntil_inplace
- refs/tags/v0.1
- refs/tags/v0.1.1
- refs/tags/v0.1.2
- refs/tags/v0.2.0-rc1
- refs/tags/v0.2.0-rc2
- refs/tags/v0.3.0
- refs/tags/v0.3.0-rc1
- refs/tags/v0.3.0-rc2
- refs/tags/v0.3.0-rc3
- refs/tags/v0.3.0-rc4
- refs/tags/v0.3.1
- refs/tags/v0.3.10
- refs/tags/v0.3.11
- refs/tags/v0.3.12
- refs/tags/v0.3.2
- refs/tags/v0.3.3
- refs/tags/v0.3.4
- refs/tags/v0.3.5
- refs/tags/v0.3.6
- refs/tags/v0.3.7
- refs/tags/v0.3.8
- refs/tags/v0.3.9
- refs/tags/v0.4.0
- refs/tags/v0.4.0-rc1
- refs/tags/v0.4.0-rc2
- refs/tags/v0.4.0-rc3
- refs/tags/v0.4.0-rc4
- refs/tags/v0.4.1
- refs/tags/v0.4.2
- refs/tags/v0.4.3
- refs/tags/v0.4.4
- refs/tags/v0.4.5
- refs/tags/v0.4.6
- refs/tags/v0.4.7
- refs/tags/v0.5.0
- refs/tags/v0.5.0-rc0
- refs/tags/v0.5.0-rc1
- refs/tags/v0.5.0-rc2
- refs/tags/v0.5.0-rc3
- refs/tags/v0.5.0-rc4
- refs/tags/v0.5.1
- refs/tags/v0.5.2
- refs/tags/v0.6.0
- refs/tags/v0.6.0-pre.alpha
- refs/tags/v0.6.0-pre.beta
- refs/tags/v0.6.0-rc1
- refs/tags/v0.6.0-rc2
- refs/tags/v0.6.0-rc3
- refs/tags/v0.6.1
- refs/tags/v0.6.2
- refs/tags/v0.6.3
- refs/tags/v0.6.4
- refs/tags/v0.7.0
- refs/tags/v0.7.0-alpha
- refs/tags/v0.7.0-beta
- refs/tags/v0.7.0-beta2
- refs/tags/v0.7.0-rc1
- refs/tags/v0.7.0-rc2
- refs/tags/v0.7.0-rc3
- refs/tags/v1.0.0
- refs/tags/v1.0.0-rc1
- refs/tags/v1.0.1
- refs/tags/v1.0.2
- refs/tags/v1.0.3
- refs/tags/v1.0.4
- refs/tags/v1.0.5
- refs/tags/v1.1.0
- refs/tags/v1.1.0-rc1
- refs/tags/v1.1.0-rc2
- refs/tags/v1.1.1
- refs/tags/v1.10.0
- refs/tags/v1.10.0-alpha1
- refs/tags/v1.10.0-beta1
- refs/tags/v1.10.0-beta2
- refs/tags/v1.10.0-beta3
- refs/tags/v1.10.0-rc1
- refs/tags/v1.10.0-rc2
- refs/tags/v1.10.0-rc3
- refs/tags/v1.10.1
- refs/tags/v1.10.2
- refs/tags/v1.11.0-alpha1
- refs/tags/v1.11.0-alpha2
- refs/tags/v1.2.0
- refs/tags/v1.2.0-rc1
- refs/tags/v1.2.0-rc2
- refs/tags/v1.2.0-rc3
- refs/tags/v1.3.0
- refs/tags/v1.3.0-alpha
- refs/tags/v1.3.0-rc1
- refs/tags/v1.3.0-rc2
- refs/tags/v1.3.0-rc3
- refs/tags/v1.3.0-rc4
- refs/tags/v1.3.0-rc5
- refs/tags/v1.3.1
- refs/tags/v1.4.0
- refs/tags/v1.4.0-rc1
- refs/tags/v1.4.0-rc2
- refs/tags/v1.4.1
- refs/tags/v1.4.2
- refs/tags/v1.5.0
- refs/tags/v1.5.0-beta1
- refs/tags/v1.5.0-rc1
- refs/tags/v1.5.0-rc2
- refs/tags/v1.5.1
- refs/tags/v1.5.2
- refs/tags/v1.5.3
- refs/tags/v1.5.4
- refs/tags/v1.6.0
- refs/tags/v1.6.0-beta1
- refs/tags/v1.6.0-rc1
- refs/tags/v1.6.0-rc2
- refs/tags/v1.6.0-rc3
- refs/tags/v1.6.1
- refs/tags/v1.6.2
- refs/tags/v1.6.3
- refs/tags/v1.6.4
- refs/tags/v1.6.5
- refs/tags/v1.6.6
- refs/tags/v1.6.7
- refs/tags/v1.7.0
- refs/tags/v1.7.0-beta1
- refs/tags/v1.7.0-beta2
- refs/tags/v1.7.0-beta3
- refs/tags/v1.7.0-beta4
- refs/tags/v1.7.0-rc1
- refs/tags/v1.7.0-rc2
- refs/tags/v1.7.0-rc3
- refs/tags/v1.7.1
- refs/tags/v1.7.2
- refs/tags/v1.7.3
- refs/tags/v1.8.0
- refs/tags/v1.8.0-beta1
- refs/tags/v1.8.0-beta2
- refs/tags/v1.8.0-beta3
- refs/tags/v1.8.0-rc1
- refs/tags/v1.8.0-rc2
- refs/tags/v1.8.0-rc3
- refs/tags/v1.8.0-rc4
- refs/tags/v1.8.1
- refs/tags/v1.8.2
- refs/tags/v1.8.3
- refs/tags/v1.8.4
- refs/tags/v1.8.5
- refs/tags/v1.9.0
- refs/tags/v1.9.0-alpha1
- refs/tags/v1.9.0-beta1
- refs/tags/v1.9.0-beta2
- refs/tags/v1.9.0-beta3
- refs/tags/v1.9.0-beta4
- refs/tags/v1.9.0-rc1
- refs/tags/v1.9.0-rc2
- refs/tags/v1.9.0-rc3
- refs/tags/v1.9.1
- refs/tags/v1.9.2
- refs/tags/v1.9.3
- refs/tags/v1.9.4
Permalinks
To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.
Revision | Author | Date | Message | Commit Date |
---|---|---|---|---|
31a9d0c | Keno Fischer | 17 July 2023, 19:42:45 UTC | Loosen hardlimit application heuristic slightly Ordinarily our recursion heuristic looks for recursion of edges, widening types to force convergence if a a recursion of edges is detected. However, under some circumstances (currently - as of #31734 when there are multiple applicable methods), we fall back to simple recursion of methods. This can be quite limiting for packages that have a big central dispatch method (e.g. Diffractor). This attempts to find a middle ground by applying the hardlimit fallback only if the split signatures are not concrete. The kind of case that we want to catch here often arise from signatures with unresolved Vararg (where there's a lot of destructuring methods, but since the size of the vararg is not known, we never terminate) or overly abstract types. I'm hoping this provides a better middle ground tradeoff by still prohibiting those kinds of cases while allowing otherwise very concretely inferred code that just happens to dispatch through a central higher-order method. | 17 July 2023, 19:54:14 UTC |
5eddb81 | Gabriel Baraldi | 17 July 2023, 18:58:35 UTC | Improve "too many parameters" error (#50539) I'm still not satisfied with this but ```julia ERROR: too many parameters for type AbstractTriangular Stacktrace: [1] top-level scope @ REPL[3]:1 ``` is slightly better than ```julia ERROR: too many parameters for type Stacktrace: [1] top-level scope @ REPL[3]:1 ``` | 17 July 2023, 18:58:35 UTC |
3a9345c | Jameson Nash | 17 July 2023, 18:54:17 UTC | precompile: ensure globals are not accidentally created where disallowed (#50541) Usually this is caught by use of `eval`, but we should try to move away from that broad rule to specific functions such as this one, such that eventually we can remove that rule from `eval`. Fix #50538 | 17 July 2023, 18:54:17 UTC |
ffe1a07 | Stefan Karpinski | 17 July 2023, 14:16:00 UTC | read(io, Char): fix read with too many leading ones (#50552) Fixes #50532. The `read(io, Char)` method didn't correctly handle the case where the lead byte starts with too many leading ones; this fix makes it handle that case correctly, which makes `read(io, Char)` match `collect(s)` in its interpretation of what a character is in all invalid cases. Also fix and test `read(::File, Char)` which has the same bug. | 17 July 2023, 14:16:00 UTC |
7141e73 | pchintalapudi | 17 July 2023, 13:48:58 UTC | Print LLVM module when verification fails (#50566) | 17 July 2023, 13:48:58 UTC |
1964621 | Shuhei Kadowaki | 17 July 2023, 03:46:58 UTC | remove `:boundscheck` argument from `Core._svec_ref` (#50561) `Core._svec_ref` has accepted `boundscheck`-value as the first argument since it was added in #45062. Nonetheless, `Core._svec_ref` simply calls `jl_svec_ref` in either the interpreter or the codegen, and thus the `boundscheck` value isn't utilized in any optimizations. Rather, even worse, this `boundscheck`-argument negatively influences the effect analysis (xref #50167 for details) and has caused type inference regressions as reported in #50544. For these reasons, this commit simply eliminates the `boundscheck` argument from `Core._svec_ref`. Consequently, `getindex(::SimpleVector, ::Int)` is now being concrete-eval eligible. closes #50544 | 17 July 2023, 03:46:58 UTC |
024edd6 | Keno Fischer | 16 July 2023, 16:31:25 UTC | Add proper error for attempted use of undef slot (#50556) Fixes the segfault in #50518 and turns it into a proper error at both the syntax level (to catch lowering generating bad slot references) as well as at the codegen level (to catch e.g. bad generated functions and opaque closures). However, note that the latter case is technically undefined behavior, because we do not model the possibility that an otherwise-defined argument could throw at access time. Of course, throwing an error is allowable as undefined behavior and preferable to a segfault. | 16 July 2023, 16:31:25 UTC |
c22b1c1 | N5N3 | 16 July 2023, 12:05:45 UTC | typeintersect: also record chained `innervars` (#50551) On master, we only record direct `innervars` (`T` -> `S<:Val{T}`). And chained `innervars` might be ignored (`T` -> `S<:Val{V<:T}`. Before https://github.com/JuliaLang/julia/pull/48228, those chained `innervars` would have been wrapped into an `UnionAll`, thus we just need to check outer vars' lb/ub. Test added. ~Note: this only fix https://github.com/JuliaLang/julia/issues/50456#issuecomment-1632611284, the other MWE still get stackoverflow.~ | 16 July 2023, 12:05:45 UTC |
18d18dc | Daniel Karrasch | 16 July 2023, 10:04:41 UTC | Add unwrapping mechanism for triangular mul and solves (#50058) This adds an unwrapping mechanism to triangular matrices, basically following the BLAS example in terms of characters encoding wrappers. It mirrors the `AdjOrTransOrHermOrSym` mechanism closely. Packages that want to overload by storage type can overload `generic_trimatmul!` (and potentially `generic_matrimul!`). Note the similarity to `generic_matvecmul!` and `generic_matmatmul!`. There is, unfortunately, some added code due to the fact that lazy conjugate wrappers have a different "wrapper depth" compared to the classic, e.g., `*Triangular{<:Any,<:Adjoint}`. I believe that with this PR we cover all wrappers of typically dense matrices with the unwrapping mechanism. ~~An analogous approach could be applied to `ldiv!`, if that's of interest and of benefit to the ecosystem.~~ | 16 July 2023, 10:04:41 UTC |
e67ddaa | Daniel Karrasch | 04 June 2023, 13:10:21 UTC | Add unwrapping mechanism for triangular matrices | 16 July 2023, 07:30:51 UTC |
38ae975 | Keno Fischer | 15 July 2023, 17:02:29 UTC | Merge branch 'master' into kf/unusederror | 15 July 2023, 17:02:29 UTC |
d215d91 | Keno Fischer | 15 July 2023, 17:01:26 UTC | Expand kwcall lowering positional default check to vararg (#50559) Fixes the case from #50518, but we actually have two test cases in the tests that also hit this (e.g. this one: ``` f40964(xs::Int...=1; k = 2) = (xs, k) ``` ), but just happened not to hit the bad codegen path. #50556, once merged would have complained on those definitions as well, without this fix. | 15 July 2023, 17:01:26 UTC |
191256e | Lilith Orion Hafner | 15 July 2023, 17:00:05 UTC | Assume size is non-negative for increased efficiency (#50530) I noticed [here](https://github.com/JuliaLang/julia/pull/50467#discussion_r1260299610) that `lastindex(x::Base.OneTo)` is not simply `x.stop`. This PR performs that optimization and many more by assuming `size` always returns positive numbers. ``` julia> @code_native lastindex(Base.OneTo(5)) # master .section __TEXT,__text,regular,pure_instructions .build_version macos, 13, 0 .globl _julia_lastindex_81 ; -- Begin function julia_lastindex_81 .p2align 2 _julia_lastindex_81: ; @julia_lastindex_81 ; ┌ @ abstractarray.jl:423 within `lastindex` ; %bb.0: ; %top ; │┌ @ abstractarray.jl:386 within `eachindex` ; ││┌ @ abstractarray.jl:134 within `axes1` ; │││┌ @ range.jl:708 within `axes` ; ││││┌ @ range.jl:471 within `oneto` ; │││││┌ @ range.jl:469 within `OneTo` @ range.jl:454 ; ││││││┌ @ promotion.jl:532 within `max` ; │││││││┌ @ int.jl:83 within `<` ldr x8, [x0] ; │││││││└ ; │││││││┌ @ essentials.jl:642 within `ifelse` cmp x8, #0 csel x0, x8, xzr, gt ; │└└└└└└└ ret ; └ ; -- End function .subsections_via_symbols julia> @code_native lastindex(Base.OneTo(5)) # pr .section __TEXT,__text,regular,pure_instructions .build_version macos, 13, 0 .globl _julia_lastindex_13253 ; -- Begin function julia_lastindex_13253 .p2align 2 _julia_lastindex_13253: ; @julia_lastindex_13253 ; ┌ @ abstractarray.jl:423 within `lastindex` ; %bb.0: ; %top ldr x0, [x0] ret ; └ ; -- End function .subsections_via_symbols ``` Also removed `axes(r::AbstractRange) = (oneto(length(r)),)` (added in #40382, @vtjnash) as redundant with the general `axes` method. The obvious downside here is that if someone defines an object with negative size, its axes will include Base.OneTo with negative stop. I think that is acceptable, but if not, we can gate this optimization to a set of known types (all AbstractArray types defined in Base should have non-negative size) | 15 July 2023, 17:00:05 UTC |
99e2604 | Shuhei Kadowaki | 15 July 2023, 15:46:07 UTC | sroa: Fix accidentally dropped condition (#50555) Fixes the issue noted in [1] (#50522) and adds a test to make sure that it doesn't regress. [1] https://github.com/JuliaLang/julia/commit/9b73611072b32b40c0d3abe14700515380c26848#r121641452 | 15 July 2023, 15:46:07 UTC |
7735556 | pchintalapudi | 15 July 2023, 15:36:26 UTC | Name LLVM function arguments (#50500) This makes it easier to correlate LLVM IR with the originating source code by including both argument name and argument type in the LLVM argument variable. <details> <summary>Example 1</summary> ```julia julia> function f(a, b, c, d, g...) e = a + b + c + d f = does_not_exist(e) + e f end f (generic function with 1 method) julia> @code_llvm f(0,0,0,0,0) ``` ```llvm ; @ REPL[1]:1 within `f` define nonnull {}* @julia_f_141(i64 signext %"a::Int64", i64 signext %"b::Int64", i64 signext %"c::Int64", i64 signext %"d::Int64", i64 signext %"g[0]::Int64") #0 { top: %0 = alloca [2 x {}*], align 8 %gcframe3 = alloca [4 x {}*], align 16 %gcframe3.sub = getelementptr inbounds [4 x {}*], [4 x {}*]* %gcframe3, i64 0, i64 0 %1 = bitcast [4 x {}*]* %gcframe3 to i8* call void @llvm.memset.p0i8.i64(i8* align 16 %1, i8 0, i64 32, i1 true) %thread_ptr = call i8* asm "movq %fs:0, $0", "=r"() #7 %tls_ppgcstack = getelementptr i8, i8* %thread_ptr, i64 -8 %2 = bitcast i8* %tls_ppgcstack to {}**** %tls_pgcstack = load {}***, {}**** %2, align 8 ; @ REPL[1]:3 within `f` %3 = bitcast [4 x {}*]* %gcframe3 to i64* store i64 8, i64* %3, align 16 %4 = getelementptr inbounds [4 x {}*], [4 x {}*]* %gcframe3, i64 0, i64 1 %5 = bitcast {}** %4 to {}*** %6 = load {}**, {}*** %tls_pgcstack, align 8 store {}** %6, {}*** %5, align 8 %7 = bitcast {}*** %tls_pgcstack to {}*** store {}** %gcframe3.sub, {}*** %7, align 8 %Main.does_not_exist.cached = load atomic {}*, {}** @0 unordered, align 8 %iscached.not = icmp eq {}* %Main.does_not_exist.cached, null br i1 %iscached.not, label %notfound, label %found notfound: ; preds = %top %Main.does_not_exist.found = call {}* @ijl_get_binding_or_error({}* nonnull inttoptr (i64 139831437630272 to {}*), {}* nonnull inttoptr (i64 139831600565400 to {}*)) store atomic {}* %Main.does_not_exist.found, {}** @0 release, align 8 br label %found found: ; preds = %notfound, %top %Main.does_not_exist = phi {}* [ %Main.does_not_exist.cached, %top ], [ %Main.does_not_exist.found, %notfound ] %8 = bitcast {}* %Main.does_not_exist to {}** %does_not_exist.checked = load atomic {}*, {}** %8 unordered, align 8 %.not = icmp eq {}* %does_not_exist.checked, null br i1 %.not, label %err, label %ok err: ; preds = %found call void @ijl_undefined_var_error({}* inttoptr (i64 139831600565400 to {}*)) unreachable ok: ; preds = %found %.sub = getelementptr inbounds [2 x {}*], [2 x {}*]* %0, i64 0, i64 0 ; @ REPL[1]:2 within `f` ; ┌ @ operators.jl:587 within `+` @ int.jl:87 %9 = add i64 %"b::Int64", %"a::Int64" %10 = add i64 %9, %"c::Int64" ; │ @ operators.jl:587 within `+` ; │┌ @ operators.jl:544 within `afoldl` ; ││┌ @ int.jl:87 within `+` %11 = add i64 %10, %"d::Int64" %12 = getelementptr inbounds [4 x {}*], [4 x {}*]* %gcframe3, i64 0, i64 3 store {}* %does_not_exist.checked, {}** %12, align 8 ; └└└ ; @ REPL[1]:3 within `f` %13 = call nonnull {}* @ijl_box_int64(i64 signext %11) %14 = getelementptr inbounds [4 x {}*], [4 x {}*]* %gcframe3, i64 0, i64 2 store {}* %13, {}** %14, align 16 store {}* %13, {}** %.sub, align 8 %15 = call nonnull {}* @ijl_apply_generic({}* nonnull %does_not_exist.checked, {}** nonnull %.sub, i32 1) store {}* %15, {}** %12, align 8 %16 = call nonnull {}* @ijl_box_int64(i64 signext %11) store {}* %16, {}** %14, align 16 store {}* %15, {}** %.sub, align 8 %17 = getelementptr inbounds [2 x {}*], [2 x {}*]* %0, i64 0, i64 1 store {}* %16, {}** %17, align 8 %18 = call nonnull {}* @ijl_apply_generic({}* inttoptr (i64 139831370516384 to {}*), {}** nonnull %.sub, i32 2) %19 = load {}*, {}** %4, align 8 %20 = bitcast {}*** %tls_pgcstack to {}** store {}* %19, {}** %20, align 8 ; @ REPL[1]:4 within `f` ret {}* %18 } ``` </details> <details> <summary>Example 2</summary> ```julia julia> function g(a, b, c, d; kwarg=0) a + b + c + d + kwarg end g (generic function with 1 method) julia> @code_llvm g(0,0,0,0,kwarg=0) ``` ```llvm ; @ REPL[3]:1 within `g` define i64 @julia_g_160([1 x i64]* nocapture noundef nonnull readonly align 8 dereferenceable(8) %"#1::NamedTuple", i64 signext %"a::Int64", i64 signext %"b::Int64", i64 signext %"c::Int64", i64 signext %"d::Int64") #0 { top: %0 = getelementptr inbounds [1 x i64], [1 x i64]* %"#1::NamedTuple", i64 0, i64 0 ; ┌ @ REPL[3]:2 within `#g#1` ; │┌ @ operators.jl:587 within `+` @ int.jl:87 %1 = add i64 %"b::Int64", %"a::Int64" %2 = add i64 %1, %"c::Int64" ; ││ @ operators.jl:587 within `+` ; ││┌ @ operators.jl:544 within `afoldl` ; │││┌ @ int.jl:87 within `+` %3 = add i64 %2, %"d::Int64" ; │││└ ; │││ @ operators.jl:545 within `afoldl` ; │││┌ @ int.jl:87 within `+` %unbox = load i64, i64* %0, align 8 %4 = add i64 %3, %unbox ; └└└└ ret i64 %4 } ``` </details> | 15 July 2023, 15:36:26 UTC |
f15eb4e | N5N3 | 15 July 2023, 12:40:08 UTC | Make `Broadcast.flatten(bc).f` more complier frendly. (better inferred and inlined) (#43322) A follow up attemp to fix #27988. (close #47493 close #50554) Examples: ```julia julia> using LazyArrays julia> bc = @~ @. 1*(1 + 1) + 1*1; julia> bc2 = @~ 1 .* 1 .- 1 .* 1 .^2 .+ 1 .* 1 .+ 1 .^ 3; ``` On master: <details><summary> click for details </summary> <p> ```julia julia> @code_typed Broadcast.flatten(bc).f(1,1,1,1,1) CodeInfo( 1 ─ %1 = Core.getfield(args, 1)::Int64 │ %2 = Core.getfield(args, 2)::Int64 │ %3 = Core.getfield(args, 3)::Int64 │ %4 = Core.getfield(args, 4)::Int64 │ %5 = Core.getfield(args, 5)::Int64 │ %6 = invoke Base.Broadcast.var"#13#14"{Base.Broadcast.var"#16#18"{Base.Broadcast.var"#15#17", Base.Broadcast.var"#13#14"{Base.Broadcast.var"#13#14"{Base.Broadcast.var"#15#17"}}, Base.Broadcast.var"#23#24"{Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}}, Base.Broadcast.var"#19#20"{Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}}, typeof(+)}}(Base.Broadcast.var"#16#18"{Base.Broadcast.var"#15#17", Base.Broadcast.var"#13#14"{Base.Broadcast.var"#13#14"{Base.Broadcast.var"#15#17"}}, Base.Broadcast.var"#23#24"{Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}}, Base.Broadcast.var"#19#20"{Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}}, typeof(+)}(Base.Broadcast.var"#15#17"(), Base.Broadcast.var"#13#14"{Base.Broadcast.var"#13#14"{Base.Broadcast.var"#15#17"}}(Base.Broadcast.var"#13#14"{Base.Broadcast.var"#15#17"}(Base.Broadcast.var"#15#17"())), Base.Broadcast.var"#23#24"{Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}}(Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}(Base.Broadcast.var"#25#26"())), Base.Broadcast.var"#19#20"{Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}}(Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}(Base.Broadcast.var"#21#22"())), +))(%1::Int64, %2::Int64, %3::Vararg{Int64}, %4, %5)::Tuple{Int64, Int64, Vararg{Int64}} │ %7 = Core._apply_iterate(Base.iterate, Base.Broadcast.var"#19#20"{Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}}(Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}(Base.Broadcast.var"#21#22"())), %6)::Tuple{Int64, Int64} │ %8 = Core._apply_iterate(Base.iterate, Base.Broadcast.var"#23#24"{Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}}(Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}(Base.Broadcast.var"#25#26"())), %6)::Tuple{Vararg{Int64}} │ %9 = Core._apply_iterate(Base.iterate, Base.Broadcast.var"#16#18"{Base.Broadcast.var"#9#11", Base.Broadcast.var"#13#14"{Base.Broadcast.var"#13#14"{Base.Broadcast.var"#15#17"}}, Base.Broadcast.var"#23#24"{Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}}, Base.Broadcast.var"#19#20"{Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}}, typeof(*)}(Base.Broadcast.var"#9#11"(), Base.Broadcast.var"#13#14"{Base.Broadcast.var"#13#14"{Base.Broadcast.var"#15#17"}}(Base.Broadcast.var"#13#14"{Base.Broadcast.var"#15#17"}(Base.Broadcast.var"#15#17"())), Base.Broadcast.var"#23#24"{Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}}(Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}(Base.Broadcast.var"#25#26"())), Base.Broadcast.var"#19#20"{Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}}(Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}(Base.Broadcast.var"#21#22"())), *), %8)::Tuple{Int64} │ %10 = Core.getfield(%7, 1)::Int64 │ %11 = Core.getfield(%7, 2)::Int64 │ %12 = Base.mul_int(%10, %11)::Int64 │ %13 = Core.getfield(%9, 1)::Int64 │ %14 = Base.add_int(%12, %13)::Int64 └── return %14 ) => Int64 julia> @code_typed Broadcast.flatten(bc2).f(1,1,1,^,1,Val(2),1,1,^,1,Val(3)) CodeInfo( 1 ─ %1 = Core.getfield(args, 1)::Int64 │ %2 = Core.getfield(args, 2)::Int64 │ %3 = Core.getfield(args, 3)::Int64 │ %4 = Core.getfield(args, 5)::Int64 │ %5 = Core.getfield(args, 7)::Int64 │ %6 = Core.getfield(args, 8)::Int64 │ %7 = Core.getfield(args, 10)::Int64 │ %8 = invoke Base.Broadcast.var"#13#14"{Base.Broadcast.var"#16#18"{Base.Broadcast.var"#15#17", Base.Broadcast.var"#13#14"{Base.Broadcast.var"#13#14"{Base.Broadcast.var"#13#14"{Base.Broadcast.var"#15#17"}}}, Base.Broadcast.var"#23#24"{Base.Broadcast.var"#23#24"{Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}}}, Base.Broadcast.var"#19#20"{Base.Broadcast.var"#19#20"{Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}}}, typeof(Base.literal_pow)}}(Base.Broadcast.var"#16#18"{Base.Broadcast.var"#15#17", Base.Broadcast.var"#13#14"{Base.Broadcast.var"#13#14"{Base.Broadcast.var"#13#14"{Base.Broadcast.var"#15#17"}}}, Base.Broadcast.var"#23#24"{Base.Broadcast.var"#23#24"{Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}}}, Base.Broadcast.var"#19#20"{Base.Broadcast.var"#19#20"{Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}}}, typeof(Base.literal_pow)}(Base.Broadcast.var"#15#17"(), Base.Broadcast.var"#13#14"{Base.Broadcast.var"#13#14"{Base.Broadcast.var"#13#14"{Base.Broadcast.var"#15#17"}}}(Base.Broadcast.var"#13#14"{Base.Broadcast.var"#13#14"{Base.Broadcast.var"#15#17"}}(Base.Broadcast.var"#13#14"{Base.Broadcast.var"#15#17"}(Base.Broadcast.var"#15#17"()))), Base.Broadcast.var"#23#24"{Base.Broadcast.var"#23#24"{Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}}}(Base.Broadcast.var"#23#24"{Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}}(Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}(Base.Broadcast.var"#25#26"()))), Base.Broadcast.var"#19#20"{Base.Broadcast.var"#19#20"{Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}}}(Base.Broadcast.var"#19#20"{Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}}(Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}(Base.Broadcast.var"#21#22"()))), Base.literal_pow))(%3::Int64, ^::Function, %4::Vararg{Any}, $(QuoteNode(Val{2}())), %5, %6, ^, %7, $(QuoteNode(Val{3}())))::Tuple{Int64, Any, Vararg{Any}} │ %9 = Core._apply_iterate(Base.iterate, Base.Broadcast.var"#19#20"{Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}}(Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}(Base.Broadcast.var"#21#22"())), %8)::Tuple{Int64, Any} │ %10 = Core._apply_iterate(Base.iterate, Base.Broadcast.var"#23#24"{Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}}(Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}(Base.Broadcast.var"#25#26"())), %8)::Tuple │ %11 = Core._apply_iterate(Base.iterate, Base.Broadcast.var"#15#17"(), %10)::Tuple │ %12 = Core.getfield(%9, 1)::Int64 │ %13 = Core.getfield(%9, 2)::Any │ %14 = (*)(%12, %13)::Any │ %15 = Core.tuple(%14)::Tuple{Any} │ %16 = Core._apply_iterate(Base.iterate, Core.tuple, %15, %11)::Tuple{Any, Vararg{Any}} │ %17 = Base.mul_int(%1, %2)::Int64 │ %18 = Core.tuple(%17)::Tuple{Int64} │ %19 = Core._apply_iterate(Base.iterate, Core.tuple, %18, %16)::Tuple{Int64, Any, Vararg{Any}} │ %20 = Core._apply_iterate(Base.iterate, Base.Broadcast.var"#19#20"{Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}}(Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}(Base.Broadcast.var"#21#22"())), %19)::Tuple{Int64, Any} │ %21 = Core._apply_iterate(Base.iterate, Base.Broadcast.var"#23#24"{Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}}(Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}(Base.Broadcast.var"#25#26"())), %19)::Tuple │ %22 = Core._apply_iterate(Base.iterate, Base.Broadcast.var"#16#18"{Base.Broadcast.var"#15#17", Base.Broadcast.var"#13#14"{Base.Broadcast.var"#13#14"{Base.Broadcast.var"#15#17"}}, Base.Broadcast.var"#23#24"{Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}}, Base.Broadcast.var"#19#20"{Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}}, typeof(*)}(Base.Broadcast.var"#15#17"(), Base.Broadcast.var"#13#14"{Base.Broadcast.var"#13#14"{Base.Broadcast.var"#15#17"}}(Base.Broadcast.var"#13#14"{Base.Broadcast.var"#15#17"}(Base.Broadcast.var"#15#17"())), Base.Broadcast.var"#23#24"{Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}}(Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}(Base.Broadcast.var"#25#26"())), Base.Broadcast.var"#19#20"{Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}}(Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}(Base.Broadcast.var"#21#22"())), *), %21)::Tuple{Any, Vararg{Any}} │ %23 = Core.getfield(%20, 1)::Int64 │ %24 = Core.getfield(%20, 2)::Any │ %25 = (-)(%23, %24)::Any │ %26 = Core.tuple(%25)::Tuple{Any} │ %27 = Core._apply_iterate(Base.iterate, Core.tuple, %26, %22)::Tuple{Any, Any, Vararg{Any}} │ %28 = Core._apply_iterate(Base.iterate, Base.Broadcast.var"#19#20"{Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}}(Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}(Base.Broadcast.var"#21#22"())), %27)::Tuple{Any, Any} │ %29 = Core._apply_iterate(Base.iterate, Base.Broadcast.var"#23#24"{Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}}(Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}(Base.Broadcast.var"#25#26"())), %27)::Tuple │ %30 = Core._apply_iterate(Base.iterate, Base.Broadcast.var"#16#18"{Base.Broadcast.var"#9#11", Base.Broadcast.var"#13#14"{Base.Broadcast.var"#13#14"{Base.Broadcast.var"#13#14"{Base.Broadcast.var"#15#17"}}}, Base.Broadcast.var"#23#24"{Base.Broadcast.var"#23#24"{Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}}}, Base.Broadcast.var"#19#20"{Base.Broadcast.var"#19#20"{Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}}}, typeof(Base.literal_pow)}(Base.Broadcast.var"#9#11"(), Base.Broadcast.var"#13#14"{Base.Broadcast.var"#13#14"{Base.Broadcast.var"#13#14"{Base.Broadcast.var"#15#17"}}}(Base.Broadcast.var"#13#14"{Base.Broadcast.var"#13#14"{Base.Broadcast.var"#15#17"}}(Base.Broadcast.var"#13#14"{Base.Broadcast.var"#15#17"}(Base.Broadcast.var"#15#17"()))), Base.Broadcast.var"#23#24"{Base.Broadcast.var"#23#24"{Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}}}(Base.Broadcast.var"#23#24"{Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}}(Base.Broadcast.var"#23#24"{Base.Broadcast.var"#25#26"}(Base.Broadcast.var"#25#26"()))), Base.Broadcast.var"#19#20"{Base.Broadcast.var"#19#20"{Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}}}(Base.Broadcast.var"#19#20"{Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}}(Base.Broadcast.var"#19#20"{Base.Broadcast.var"#21#22"}(Base.Broadcast.var"#21#22"()))), Base.literal_pow), %29)::Tuple{Any} │ %31 = Core.getfield(%28, 1)::Any │ %32 = Core.getfield(%28, 2)::Any │ %33 = (+)(%31, %32)::Any │ %34 = Core.getfield(%30, 1)::Any │ %35 = (+)(%33, %34)::Any └── return %35 ) => Any ``` </p> </details> On this PR ```julia julia> @code_typed Broadcast.flatten(bc).f(1,1,1,1,1) CodeInfo( 1 ─ %1 = Core.getfield(args, 1)::Int64 │ %2 = Core.getfield(args, 2)::Int64 │ %3 = Core.getfield(args, 3)::Int64 │ %4 = Core.getfield(args, 4)::Int64 │ %5 = Core.getfield(args, 5)::Int64 │ %6 = Base.add_int(%2, %3)::Int64 │ %7 = Base.mul_int(%1, %6)::Int64 │ %8 = Base.mul_int(%4, %5)::Int64 │ %9 = Base.add_int(%7, %8)::Int64 └── return %9 ) => Int64 julia> @code_typed Broadcast.flatten(bc2).f(1,1,1,^,1,Val(2),1,1,^,1,Val(3)) CodeInfo( 1 ─ %1 = Core.getfield(args, 1)::Int64 │ %2 = Core.getfield(args, 2)::Int64 │ %3 = Core.getfield(args, 3)::Int64 │ %4 = Core.getfield(args, 5)::Int64 │ %5 = Core.getfield(args, 7)::Int64 │ %6 = Core.getfield(args, 8)::Int64 │ %7 = Core.getfield(args, 10)::Int64 │ %8 = Base.mul_int(%1, %2)::Int64 │ %9 = Base.mul_int(%4, %4)::Int64 │ %10 = Base.mul_int(%3, %9)::Int64 │ %11 = Base.sub_int(%8, %10)::Int64 │ %12 = Base.mul_int(%5, %6)::Int64 │ %13 = Base.add_int(%11, %12)::Int64 │ %14 = Base.mul_int(%7, %7)::Int64 │ %15 = Base.mul_int(%14, %7)::Int64 │ %16 = Base.add_int(%13, %15)::Int64 └── return %16 ) => Int64 ``` | 15 July 2023, 12:40:08 UTC |
e464218 | Shuhei Kadowaki | 15 July 2023, 05:49:43 UTC | tabs to space | 15 July 2023, 05:49:48 UTC |
3c9522d | Keno Fischer | 14 July 2023, 18:21:25 UTC | sroa: Fix accidentally dropped condition Fixes the issue noted in [1] (#50522) and adds a test to make sure that it doesn't regress. [1] https://github.com/JuliaLang/julia/commit/9b73611072b32b40c0d3abe14700515380c26848#r121641452 | 15 July 2023, 05:49:48 UTC |
cd74337 | N5N3 | 14 July 2023, 14:27:37 UTC | Also record chained `innervars` At present we only record direct `innervars` (`T` -> `S<:Val{T}`). And chained `innervars` might be ignored (`T` -> `S<:Val{V<:T}`\ This commit fix it. | 15 July 2023, 04:35:13 UTC |
d406c7e | N5N3 | 03 December 2021, 12:25:54 UTC | make flattened `Broadcasted` more compiler friendly. 1. make `cat_nested` better inferred by switching to direct self-recursion. 2. `make_makeargs` now create a tuple of functions which take in the whole argument list and return the corresponding input for the broadcasted function. | 15 July 2023, 02:11:49 UTC |
cae9576 | Lilith Hafner | 14 July 2023, 21:52:58 UTC | fix typo | 14 July 2023, 21:52:58 UTC |
22ac24a | Gabriel Baraldi | 14 July 2023, 21:33:45 UTC | Remove mentions of “home project” in documentation and output (#50527) The concept of “home project” was removed in #36434. | 14 July 2023, 21:33:45 UTC |
c272236 | Keno Fischer | 14 July 2023, 21:07:02 UTC | Expand kwcall lowering positional default check to vararg Fixes the case from #50518, but we actually have two test cases in the tests that also hit this (e.g. this one: ``` f40964(xs::Int...=1; k = 2) = (xs, k) ```), but just happened not to hit the bad codegen path. #50556, once merged would have complained on those definitions as well, without this fix. | 14 July 2023, 21:09:24 UTC |
547d85d | Lilith Hafner | 14 July 2023, 20:20:24 UTC | update testhelpers | 14 July 2023, 20:20:24 UTC |
eb37e92 | Keno Fischer | 14 July 2023, 19:09:24 UTC | Add proper error for attempted use of undef slot Fixes the segfault in #50518 and turns it into a proper error at both the syntax level (to catch lowering generating bad slot references) as well as at the codegen level (to catch e.g. bad generated functions and opaque closures). However, note that the latter case is technically undefined behavior, because we do not model the possibility that an otherwise-defined argument could throw at access time. Of course, throwing an error is allowable as undefined behavior and preferable to a segfault. | 14 July 2023, 19:43:41 UTC |
ae08077 | Keno Fischer | 14 July 2023, 15:18:15 UTC | improve some assertions in base/compiler/ssair/passes.jl (#50547) | 14 July 2023, 15:18:15 UTC |
b9da60f | Shuhei Kadowaki | 14 July 2023, 09:17:05 UTC | improve some assertions in base/compiler/ssair/passes.jl | 14 July 2023, 09:17:05 UTC |
7662661 | Kristoffer Carlsson | 14 July 2023, 06:48:53 UTC | gf: remove unnecessary assert cycle==depth (#50542) We do not care about this condition (the point of this fast path is to skip checking it). Fix #50450 | 14 July 2023, 06:48:53 UTC |
15bcf1b | Jameson Nash | 13 July 2023, 21:01:33 UTC | gf: remove unnecessary assert cycle==depth We do not care about this condition (the point of this fast path is to skip checking it). Fix #50450 | 13 July 2023, 21:01:33 UTC |
fabc519 | Oscar Smith | 13 July 2023, 20:51:28 UTC | gc: remove over-eager assertion (#50540) Fixes #50451. Fortunately, this wasn't anything more than an unnecessary assertion. | 13 July 2023, 20:51:28 UTC |
5a922fa | Jameson Nash | 13 July 2023, 18:24:30 UTC | improve cat design / performance (#49322) This used to make a lot of references to design issues with the SparseArrays package (https://github.com/JuliaLang/julia/issues/2326 / https://github.com/JuliaLang/julia/pull/20815), which result in a non-sensical dispatch arrangement, and contribute to a slow loading experience do to the nonsense Unions that must be checked by subtyping. | 13 July 2023, 18:24:30 UTC |
f4f1ecf | Jameson Nash | 13 July 2023, 18:16:13 UTC | gc: remove over-eager assertion Fixes #50451 | 13 July 2023, 18:16:13 UTC |
dcca46b | Diogo Netto | 13 July 2023, 17:24:32 UTC | gc: fix conservative GC support (#50533) Ensure `internal_obj_base_ptr` checks whether objects past freelist pointer are in freelist. Fixes #50434 | 13 July 2023, 17:24:32 UTC |
1a7fb51 | Jishnu Bhattacharya | 13 July 2023, 17:21:35 UTC | Use `oneto` in CartesianIndices when given sizes (#50534) | 13 July 2023, 17:21:35 UTC |
cdec4c2 | Cody Tapscott | 13 July 2023, 15:54:09 UTC | ssair: Correctly handle stmt insertion at end of basic block (#50528) In the presence of `attach_after` insertions, we have to be careful to extend the basic block to include everything up to the last insertion. We were accounting for "new" nodes (before the compaction point), but not "pending" nodes (after the compaction point). Fixes https://github.com/JuliaLang/julia/issues/50379. | 13 July 2023, 15:54:09 UTC |
9091cb0 | Steven G. Johnson | 13 July 2023, 11:58:56 UTC | cleanups to copyuntil (#50485) * remove duplicate readuntil(s::IO, delim::UInt8) method, some cleanup * more conservative ensureroom in copyuntil * whoops * tweak * test fallbacks | 13 July 2023, 11:58:56 UTC |
9b73611 | Shuhei Kadowaki | 13 July 2023, 07:50:15 UTC | SROA: don't use `unswitchtupleunion` and explicitly use type name only (#50522) Since construction of `UnionAll` of `Union`s can be expensive. The SROA pass just needs to look at type name information and do not need to propagate full type objects. - xref: <https://github.com/JuliaLang/julia/pull/50511#issuecomment-1632384357> - closes #50511 | 13 July 2023, 07:50:15 UTC |
824cdf1 | Oscar Smith | 13 July 2023, 03:50:40 UTC | Merge pull request #50525 from oscardssmith/fix-generic_lu_fact-check=false only check that values are finite in `generic_lufact` when `check=true` | 13 July 2023, 03:50:40 UTC |
2984f9c | Prem Chintalapudi | 13 July 2023, 02:39:38 UTC | Couple of extra comments | 13 July 2023, 02:39:38 UTC |
9122376 | Shuhei Kadowaki | 13 July 2023, 02:34:50 UTC | remove unnecessary `::REPLDisplay == ::REPLDisplay` method (#50520) | 13 July 2023, 02:34:50 UTC |
a4f40eb | Lilith Hafner | 12 July 2023, 21:29:14 UTC | Assume length is non-negative for increased efficiency | 12 July 2023, 21:29:14 UTC |
6ef6a0c | Oscar Smith | 12 July 2023, 20:45:31 UTC | typo | 12 July 2023, 20:45:31 UTC |
66f9f9c | Simon May | 12 July 2023, 19:36:24 UTC | Remove mentions of “home project” in documentation and output The concept of “home project” was removed in #36434. | 12 July 2023, 19:36:24 UTC |
bfbff0f | oscarddssmith | 12 July 2023, 19:33:25 UTC | add tests | 12 July 2023, 19:33:25 UTC |
1c71fda | oscarddssmith | 12 July 2023, 19:25:32 UTC | only check that values are finite when check=true | 12 July 2023, 19:25:32 UTC |
9f62658 | Prem Chintalapudi | 12 July 2023, 14:53:57 UTC | Address review comments | 12 July 2023, 14:53:57 UTC |
4995d3f | Shuhei Kadowaki | 12 July 2023, 06:09:15 UTC | REPLCompletions: allow field completions for `Union` results (#50503) This generalizes the idea of #50483 and enables field completions when the result type is inferred to be `Union{A,B}` where `A` is not necessarily the same type as `B`. | 12 July 2023, 06:09:15 UTC |
e64d201 | Bagaev Dmitry | 12 July 2023, 02:36:22 UTC | fix typo in the --gcthreads argument description (#50461) | 12 July 2023, 02:36:22 UTC |
5baaafd | Steve Kelly | 11 July 2023, 19:32:47 UTC | Rework introduction to SSA-IR in dev docs (#49796) Primary authorship credits for this go to Oscar Smith. This reworks the introduction to the SSA-IR section of the manual to give a brief introduction to SSA to prepare the reader with a short example. We also rework the Background and IR Node types sections. Co-authored-by: Oscar Smith <oscardssmith@gmail.com> | 11 July 2023, 19:32:47 UTC |
5a33c70 | Steven G. Johnson | 11 July 2023, 18:57:16 UTC | Clarify definition of cyclic permutation in randcycle docstring (#50487) | 11 July 2023, 18:57:16 UTC |
3995278 | Shuhei Kadowaki | 11 July 2023, 17:53:28 UTC | SROA: generalize `unswitchtupleunion` optimization (#50502) This commit improves SROA pass by extending the `unswitchtupleunion` optimization to handle the general parametric types, e.g.: ```julia julia> struct A{T} x::T end; julia> function foo(a1, a2, c) t = c ? A(a1) : A(a2) return getfield(t, :x) end; julia> only(Base.code_ircode(foo, (Int,Float64,Bool); optimize_until="SROA")) ``` > Before ``` 2 1 ─ goto #3 if not _4 │ 2 ─ %2 = %new(A{Int64}, _2)::A{Int64} │╻ A └── goto #4 │ 3 ─ %4 = %new(A{Float64}, _3)::A{Float64} │╻ A 4 ┄ %5 = φ (#2 => %2, #3 => %4)::Union{A{Float64}, A{Int64}} │ 3 │ %6 = Main.getfield(%5, :x)::Union{Float64, Int64} │ └── return %6 │ => Union{Float64, Int64} ``` > After ``` julia> only(Base.code_ircode(foo, (Int,Float64,Bool); optimize_until="SROA")) 2 1 ─ goto #3 if not _4 │ 2 ─ nothing::A{Int64} │╻ A └── goto #4 │ 3 ─ nothing::A{Float64} │╻ A 4 ┄ %8 = φ (#2 => _2, #3 => _3)::Union{Float64, Int64} │ │ nothing::Union{A{Float64}, A{Int64}} 3 │ %6 = %8::Union{Float64, Int64} │ └── return %6 │ => Union{Float64, Int64} ``` | 11 July 2023, 17:53:28 UTC |
39638cf | Prem Chintalapudi | 11 July 2023, 17:26:23 UTC | Minor fixes | 11 July 2023, 17:26:23 UTC |
cab1fe3 | Prem Chintalapudi | 11 July 2023, 15:13:26 UTC | Fix some test issues | 11 July 2023, 15:13:26 UTC |
0f6bfd6 | Ian Butterworth | 11 July 2023, 12:33:41 UTC | Profile: Add specifying dir for `take_heap_snapshot` and handling if current dir is unwritable (#50476) Co-authored-by: Valentin Churavy <vchuravy@users.noreply.github.com> | 11 July 2023, 12:33:41 UTC |
2d4d096 | Tarn Yeong Ching | 11 July 2023, 07:22:55 UTC | unify `shuffle` and `randperm` (#50318) | 11 July 2023, 07:22:55 UTC |
680e3b3 | Shuhei Kadowaki | 11 July 2023, 04:57:30 UTC | REPLCompletions: unswitch `Union` of same `UnionAll` results (#50483) With this commit the inference-base REPL completion algorithm converts `Union` result of same `UnionAll` instances to `UnionAll` of `Union`s so that it can use the field information of the `UnionAll`. This allows us to get completions for cases like: ```julia julia> union_somes() = rand() < 0.5 ? Some(1) : Some(2.); julia> union_somes().| # completes to `value` ``` | 11 July 2023, 04:57:30 UTC |
25eeba4 | DilumAluthgeBot | 11 July 2023, 03:51:26 UTC | 🤖 [master] Bump the Pkg stdlib from e8197dd0e to 80e64bcd3 (#50501) | 11 July 2023, 03:51:26 UTC |
3a36e1a | Keno Fischer | 11 July 2023, 02:59:50 UTC | sroa: Don't use unwrapped type for type constraint (#50499) In SROA, when we lift getfields over branches (ifelse or phi), we try to exclude branches that we know to not contribute by their types. However, we were incorrectly using the `unwrap_unionall`'ed version of the type. Type intersection has a bunch of fallbacks for free typevars, but the results are not necessarily correct (e.g. in the test case where `hasintersect(Wrap1{Wrap{Int}}, Wrap1{Wrap{T}})` gives false). We should ideally get around to just making type-quries for things with free typevars an error, but for now, just fix the particular issue in sroa, by using the non-unwrapped type. | 11 July 2023, 02:59:50 UTC |
b26f3b2 | Viral B. Shah | 11 July 2023, 01:01:40 UTC | Update SparseArrays.jl stdlib for SuiteSparse 7 (#48977) * Use SparseArrays.jl updated to work with SuiteSparse 7, and with Int32 indices * SuiteSparse_jll Update to v7.2.0 (Using @Wimmerer's SuiteSparse fork for 32-bit QR) --------- Co-authored-by: Francois-Xavier Coudert <fxcoudert@gmail.com> Co-authored-by: Will Kimmerer <kimmerer@mit.edu> | 11 July 2023, 01:01:40 UTC |
39aff78 | Prem Chintalapudi | 11 July 2023, 00:24:23 UTC | Name LLVM function arguments | 11 July 2023, 00:24:23 UTC |
a134076 | Lilith Orion Hafner | 10 July 2023, 22:30:48 UTC | Revise sort.md and docstrings in sort.jl (#48363) Co-authored-by: Jeremie Knuesel <knuesel@gmail.com> | 10 July 2023, 22:30:48 UTC |
8dd58a4 | Steven G. Johnson | 10 July 2023, 16:45:27 UTC | whitespace fix in randcycle (#50493) | 10 July 2023, 16:45:27 UTC |
e2e34f6 | Andrés Riedemann | 10 July 2023, 14:21:37 UTC | correction in `Base.isassigned` with `Tridiagonal` boundscheck error (#50488) See https://github.com/JuliaLang/julia/pull/49827#discussion_r1252566082 | 10 July 2023, 14:21:37 UTC |
db6193c | Navid C. Constantinou | 10 July 2023, 12:22:02 UTC | doc: add spaces after commas in some function calls (#50478) | 10 July 2023, 12:22:02 UTC |
7530a63 | Lilith Orion Hafner | 10 July 2023, 11:46:54 UTC | Clarify compat note in randcycle (#50482) | 10 July 2023, 11:46:54 UTC |
4051769 | Steven G. Johnson | 10 July 2023, 10:17:48 UTC | clarify documentation for r"..."x mode (#50462) | 10 July 2023, 10:17:48 UTC |
206e59a | Lionel Zoubritzky | 10 July 2023, 10:16:28 UTC | Fix compat annotation for italic printstyled (#50490) | 10 July 2023, 10:16:28 UTC |
7b435d0 | Max Horn | 10 July 2023, 10:15:23 UTC | Fix minor typos in comments / docs (#50489) | 10 July 2023, 10:15:23 UTC |
8e877cb | Diogo Netto | 10 July 2023, 00:40:14 UTC | relax assertion involving pg->nold to reflect that it may be a bit inaccurate with parallel marking (#50466) | 10 July 2023, 00:40:14 UTC |
84ef74f | Shuhei Kadowaki | 10 July 2023, 00:39:01 UTC | minor cleanup on `Core.Compiler.type_annotate!` (#50484) | 10 July 2023, 00:39:01 UTC |
7c80589 | Nathan Zimmerberg | 09 July 2023, 19:17:01 UTC | maximum is for array reduction, not max. (#50481) | 09 July 2023, 19:17:01 UTC |
fe2eead | pchintalapudi | 09 July 2023, 14:12:08 UTC | Document llvm passes in more depth (#50319) | 09 July 2023, 14:12:08 UTC |
236c23b | Kevin Song | 08 July 2023, 19:54:20 UTC | docs: Fix a `!!! note` which was miscapitalized (#50474) | 08 July 2023, 19:54:20 UTC |
2e0e3d5 | Ian Butterworth | 08 July 2023, 17:32:07 UTC | report if task has started in show method (#50464) | 08 July 2023, 17:32:07 UTC |
d60f9b3 | Keno Fischer | 08 July 2023, 06:52:22 UTC | Refactor and pass correct interpreter to typeinf finish loop (#50469) When we have an inference loop with different interpreters, the current code was trying to cache everything with the top level interpreter of the loop, yielding some unexpected behavior. I don't think that it's necessarily super well defined what should happen here, as it depends on the interpreters, in question, but I think it's better to try to cache each frame with the interpreter that created it, since they may have different lattices, etc. Doing this fixes an error I saw downstream that had just such a situation. --------- Co-authored-by: Shuhei Kadowaki <40514306+aviatesk@users.noreply.github.com> | 08 July 2023, 06:52:22 UTC |
e20274f | Tim Besard | 08 July 2023, 02:34:18 UTC | Remove FATAL_TYPE_BOUND_ERROR (#50465) | 08 July 2023, 02:34:18 UTC |
085c3d1 | Lilith Orion Hafner | 07 July 2023, 22:16:25 UTC | Make `(1:3:4)[6148914691236517207]` throw (#50118) | 07 July 2023, 22:16:25 UTC |
a660798 | Jeremie Knuesel | 07 July 2023, 22:14:40 UTC | Improve documentation of sort-related functions (#48387) * document the `order` keyword in `sort!` * list explicitly the required properties of `lt` in `sort!` * clarify the sequence of "by" transformations if both `by` and `order` are given * show default values in the signatures for `searchsorted` and related functions * note that `by` is also applied to searched value in `searchsorted` and related * add `isunordered` to the manual (it's already exported) --------- Co-authored-by: Lilith Orion Hafner <lilithhafner@gmail.com> | 07 July 2023, 22:14:40 UTC |
b99f251 | Nicholas Bauer | 07 July 2023, 19:11:29 UTC | Merge new `reinterpret` with essentials.jl `reinterpret` (#50367) | 07 July 2023, 19:11:29 UTC |
930838b | Guillaume Dalle | 07 July 2023, 17:59:39 UTC | Add exports to `Example` module for the test workflow in the docs (#50459) The tests are not supposed to work if the toy module `Example` does not export its functions See https://discourse.julialang.org/t/workflow-for-testing-packages/101305 | 07 July 2023, 17:59:39 UTC |
21bb0c7 | Keno Fischer | 07 July 2023, 15:43:52 UTC | Remove union penalties for inlining cost (#50429) I added this code back in #27057, when I first made Union-full signatures inlineable. The justification was to try to encourage the union splitting to happen on the outside. However (and I believe this changed since this code was introduced), these days inference is in complete control of union splitting and we do not take inlineability or non-inlineability of the non-unionsplit function into account when deciding how to inline. As a result, the only effect of the union split penalties was to prevent inlining of functions that are not union-split eligible (e.g. `+(::Vararg{Union{Int, Missing}, 3})`), but are nevertheless cheap by our inlining metric. There is really no reason not to try to inline such functions, so delete this logic. | 07 July 2023, 15:43:52 UTC |
0718995 | Gabriel Baraldi | 07 July 2023, 14:55:56 UTC | Optimize getfield lowering to avoid boxing in some cases (#50444) | 07 July 2023, 14:55:56 UTC |
4cce2a2 | pchintalapudi | 07 July 2023, 13:34:55 UTC | Add some documentation about ahead of time compilation mechanics (#50376) | 07 July 2023, 13:34:55 UTC |
d9ad6d2 | Morten Piibeleht | 06 July 2023, 22:23:35 UTC | docs: fix link in `AbstractString` docstring (#50436) | 06 July 2023, 22:23:35 UTC |
2a406b2 | Keno Fischer | 06 July 2023, 21:20:40 UTC | Add pattern matching for `typeof` into field type tparam (#50422) * Add pattern matching for `typeof` into field type tparam This PR allows full elimination of the following, even in ill-typed code. ``` struct TParamTypeofTest{T} x::T @eval TParamTypeofTest(x) = $(Expr(:new, :(TParamTypeofTest{typeof(x)}), :x)) end function tparam_typeof_test_elim(x) TParamTypeofTest(x).x end ``` Before this PR, we would get: ``` julia> code_typed(tparam_typeof_test_elim, Tuple{Any}) 1-element Vector{Any}: CodeInfo( 1 ─ %1 = Main.typeof(x)::DataType │ %2 = Core.apply_type(Main.TParamTypeofTest, %1)::Type{TParamTypeofTest{_A}} where _A │ %new(%2, x)::TParamTypeofTest └── return x ``` Where the `new` is non-eliminable, because the compiler did not know that `x::_A`. Fix this by pattern matching this particular pattern (where the condition is guaranteed, because we computed `_A` by `typeof`). This is not particularly general, but this pattern comes up a lot, so it's surprisingly effective. * add test case for optimizing multiple abstract fields * improve robustness --------- Co-authored-by: Shuhei Kadowaki <aviatesk@gmail.com> | 06 July 2023, 21:20:40 UTC |
46477cc | Keno Fischer | 06 July 2023, 21:18:59 UTC | Delete `trust_inference` option (#50432) * Flip trust_inference option I think the time has come to flip this. This was added when the type system was much less reliable at producing intersections. It is true that we still have the occasional type sytem bug, but we're already trusting inference in a bunch of other places. At the same time, the cost of this has grown in terms of bloated IR needing to be visited in places like irinterp, so let's flip the bit and we'll deal with type system bugs the way we usually due. * refactor to remove trust_inference entirely --------- Co-authored-by: oscarddssmith <oscar.smith@juliacomputing.com> | 06 July 2023, 21:18:59 UTC |
c09efd9 | Lilith Orion Hafner | 06 July 2023, 20:42:14 UTC | More consistent findall output type (take 2) (#48976) Fixup for #45538 Helps with #45495 | 06 July 2023, 20:42:14 UTC |
6d44707 | adienes | 06 July 2023, 20:36:37 UTC | retrieve `splice!` item via `only` rather than `getindex` (#50430) Because `only` uses iteration, similar to the other branches here, rather than assuming it supports one-based-indexing. | 06 July 2023, 20:36:37 UTC |
b6bfe98 | Andrés Riedemann | 06 July 2023, 20:05:43 UTC | Define `Base.isstored` for Diagonals and Triangular matrices (#50391) X-ref #50377 | 06 July 2023, 20:05:43 UTC |
c14d4bb | Steven G. Johnson | 06 July 2023, 19:50:32 UTC | copyuntil(out::IO, in::IO, delim) (#48273) Note that this defines the lock order as `out` then `in` for streams which may try to take both locks. This is now a mandatory API convention for all future streams. Co-authored-by: Rafael Fourquet <fourquet.rafael@gmail.com> | 06 July 2023, 19:50:32 UTC |
64ab537 | Malte Sandstede | 06 July 2023, 18:45:02 UTC | Add GC metric `last_incremental_sweep` (#50190) * Add GC metric `last_incremental_sweep` * Update gc.c * Update gc.c | 06 July 2023, 18:45:02 UTC |
feb2988 | Simon Byrne | 06 July 2023, 08:41:15 UTC | remove type parameter from AbstractTriangular (#26307) Co-authored-by: Daniel Karrasch <daniel.karrasch@posteo.de> | 06 July 2023, 08:41:15 UTC |
77ce343 | Jishnu Bhattacharya | 06 July 2023, 08:31:12 UTC | Fix some inference checks in reduce tests (#50437) | 06 July 2023, 08:31:12 UTC |
5579566 | Guillaume Dalle | 06 July 2023, 08:01:18 UTC | Add paragraph on abstract `Function` fields to performance tips (#50421) Co-authored-by: Steven G. Johnson <stevenj@mit.edu> | 06 July 2023, 08:01:18 UTC |
0b54ded | Steven G. Johnson | 06 July 2023, 07:58:09 UTC | avoid potential type-instability in _replace_(str, ...) (#50424) | 06 July 2023, 07:58:09 UTC |
2360140 | Elliot Saba | 06 July 2023, 00:08:45 UTC | Merge pull request #50428 from JuliaLang/kf/divinlinecost Lower inlining cost of floating point div | 06 July 2023, 00:08:45 UTC |
c09a199 | Diogo Netto | 05 July 2023, 20:33:43 UTC | update halfpages pointer after actually sweeping pages (#50387) | 05 July 2023, 20:33:43 UTC |
8d62b40 | Keno Fischer | 05 July 2023, 20:21:40 UTC | Lower inlining cost of floating point div Our inlining cost model is extremely primitive, though surprisingly functional given its limitations. The basic idea for it was just that we'd give every intrinsic the approximate cost in cycles, such that for sufficiently large functions (>100 cycles), the cost of the extra call would be dwarfed by the cost of the function. However, there's a few problems with this. For one, the real issue is usually not the extra overhead of the call (which is small and well-predicated), but rather the inhibition of optimizations that inlining might have allowed. Additionally, the relevant cost comparison is not generally latency, but rather the size of the resulting binary. Lastly, the latency metric is misleading on modern superscalar architectures, because the core will perform other tasks while the operation is executing. In fact, somewhat counter-intuitively, this means that it is *more* important to inline high-latency instructions to allow the compiler to perform better latency hiding by spreading out the high-latency instructions. We probably need a full-on rethink of the inlining model at some point, but for the time being, this fixes a problem that I ran into in real code by reducing the inlining cost for floating point division to be the same as that of floating point multiplication. The particular case where I saw this was the batched forward AD rule for division, which had 6 calls to div_float. Inlining these provided substantially better performance. | 05 July 2023, 20:28:32 UTC |
23c0418 | woclass | 05 July 2023, 13:30:42 UTC | gc: fix time unit in jl_print_gc_stats (#50417) | 05 July 2023, 13:30:42 UTC |
435c1c1 | William Moses | 05 July 2023, 11:32:13 UTC | Add CPU feature helper function (#50402) | 05 July 2023, 11:32:13 UTC |