Skip to content

Conversation

@pchintalapudi
Copy link
Member

Alwaysinline functions need to have their bodies in each partition during image compilation in order to be inlined. We were not doing this before, which caused #50749. This fixes that issue by not partitioning alwaysinline functions, and internalizing them into each shard so that they won't cause name conflicts, which should fix #50749.

@timholy / @gbaraldi could you confirm the regression goes away on this PR?

@pchintalapudi pchintalapudi added compiler:codegen Generation of LLVM IR and native code compiler:llvm For issues that relate to LLVM labels Aug 2, 2023
@pchintalapudi pchintalapudi added the backport 1.10 Change should be backported to the 1.10 release label Aug 2, 2023
@gbaraldi
Copy link
Member

gbaraldi commented Aug 2, 2023

It does fix the weird performance seen in the issue.

@pchintalapudi pchintalapudi merged commit bea8c44 into master Aug 2, 2023
@pchintalapudi pchintalapudi deleted the pc/always-inline branch August 2, 2023 21:51
@timholy
Copy link
Member

timholy commented Aug 3, 2023

CC @chriselrod

KristofferC pushed a commit that referenced this pull request Aug 10, 2023
KristofferC added a commit that referenced this pull request Aug 16, 2023
Backported PRs:
- [x] #50637 <!-- Remove SparseArrays legacy code -->
- [x] #50665 <!-- print `@time` msg into print buffer -->
- [x] #50523 <!-- Avoid generic call in most cases for getproperty -->
- [x] #50635 <!-- `versioninfo()`: include build info and unofficial
warning -->
- [x] #50670 <!-- Make reinterpret specialize fully. -->
- [x] #50666 <!-- include `--pkgimage=no` caches for stdlibs -->
- [x] #50765 
- [x] #50764
- [x] #50768
- [x] #50767
- [x] #50618 <!-- inference: continue const-prop' when concrete-eval
returns non-inlineable -->
- [x] #50689 <!-- Attach `tanpi` docstring to method -->
- [x] #50671 <!-- Fix rdiv of complex lhs by real factorizations -->
- [x] #50598 <!-- only limit types in stack traces in the REPL -->
- [x] #50766 <!-- Don't partition alwaysinline functions -->
- [x] #50771 <!-- re-allow non-string values in ENV `get!` -->
- [x] #50682 <!-- Add fallback if we have make a weird GC decision. -->
- [x] #50781 <!-- fix `bit_map!` with aliasing -->
- [x] #50172 <!-- print feature flags used for matching pkgimage -->
- [x] #50844 <!-- Bump OpenBLAS binaries to use the new GEMM
multithreading threshold -->
- [x] #50826 <!-- Update dependency builds -->
- [x] #50845 <!-- fix #50438, use default pool for at-threads -->
- [x] #50568 <!-- `Array(::AbstractRange)` should return an `Array` -->
- [x] #50655 <!-- fix hashing regression. -->
- [x] #50779 <!-- Minor refactor to image generation -->
- [x] #50791 <!-- Make symbols internal in jl_create_native, and only
externalize them when partitioning -->
- [x] #50724 <!-- Merge opaque closure modules with the rest of the
workqueue -->
- [x] #50738 <!-- Add alignment to constant globals -->
- [x] #50871 <!-- macOS: Don't inspect dead threadtls during exception
handling. -->

Need manual backport:

Contains multiple commits, manual intervention needed:

Non-merged PRs with backport label:
- [ ] #50850 <!-- Remove weird Rational dispatch and add pi functions to
list -->
- [ ] #50823 <!-- Make ranges more robust with unsigned indexes. -->
- [ ] #50809 <!-- Limit type-printing in MethodError -->
- [ ] #50663 <!-- Fix Expr(:loopinfo) codegen -->
- [ ] #50594 <!-- Disallow non-index Integer types in isassigned -->
- [ ] #50385 <!-- Precompile pidlocks: add to NEWS and docs -->
- [ ] #49805 <!-- Limit TimeType subtraction to AbstractDateTime -->
@KristofferC KristofferC removed the backport 1.10 Change should be backported to the 1.10 release label Aug 18, 2023
@timholy timholy added the backport 1.9 Change should be backported to release-1.9 label Aug 22, 2023
@timholy
Copy link
Member

timholy commented Aug 22, 2023

Can this also be safely backported to 1.9? #50977

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport 1.9 Change should be backported to release-1.9 compiler:codegen Generation of LLVM IR and native code compiler:llvm For issues that relate to LLVM

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Significant performance regression when precompiled

4 participants