Skip to content
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

optimizer: enable SROA with constant globals #42355

Merged
merged 1 commit into from
Sep 23, 2021
Merged

optimizer: enable SROA with constant globals #42355

merged 1 commit into from
Sep 23, 2021

Conversation

aviatesk
Copy link
Sponsor Member

julia> const REF_FLD = :x;

julia> code_typed() do
           r = Ref{Int}(42) # should be eliminated
           x = getfield(r, REF_FLD) # should be eliminated
           return sin(x)
       end |> only
CodeInfo(
1%1 = Base.sitofp(Float64, 42)::Float64%2 = invoke Base.Math.sin(%1::Float64)::Float64
└──      return %2
) => Float64

```julia
julia> const REF_FLD = :x;

julia> code_typed() do
           r = Ref{Int}(42) # should be eliminated
           x = getfield(r, REF_FLD) # should be eliminated
           return sin(x)
       end |> only
CodeInfo(
1 ─ %1 = Base.sitofp(Float64, 42)::Float64
│   %2 = invoke Base.Math.sin(%1::Float64)::Float64
└──      return %2
) => Float64
```
@aviatesk aviatesk added the compiler:optimizer Optimization passes (mostly in base/compiler/ssair/) label Sep 23, 2021
aviatesk added a commit that referenced this pull request Sep 23, 2021
Built on top of #42355:
- add more type signatures, add `@nospecialize` decls for callbacks
- remove dead code
- add some docs on SROA pass
aviatesk added a commit that referenced this pull request Sep 23, 2021
Built on top of #42355:
- add more type signatures, add `@nospecialize` decls for callbacks
- remove dead code
- add some docs on SROA pass
@vtjnash vtjnash merged commit 3eeafa6 into master Sep 23, 2021
@vtjnash vtjnash deleted the avi/sroa branch September 23, 2021 18:44
aviatesk added a commit that referenced this pull request Sep 24, 2021
Built on top of #42355:
- add more type signatures, add `@nospecialize` decls for callbacks
- remove dead code
- add some docs on SROA pass
aviatesk added a commit that referenced this pull request Sep 24, 2021
Built on top of #42355:
- add more type signatures
- add more `@nospecialize` decls
- remove dead/debug code
- add some docs on SROA and ADCE passes
KristofferC pushed a commit that referenced this pull request Sep 28, 2021
```julia
julia> const REF_FLD = :x;

julia> code_typed() do
           r = Ref{Int}(42) # should be eliminated
           x = getfield(r, REF_FLD) # should be eliminated
           return sin(x)
       end |> only
CodeInfo(
1 ─ %1 = Base.sitofp(Float64, 42)::Float64
│   %2 = invoke Base.Math.sin(%1::Float64)::Float64
└──      return %2
) => Float64
```
aviatesk added a commit that referenced this pull request Sep 28, 2021
Built on top of #42355:
- add more type signatures
- add more `@nospecialize` decls
- remove dead/debug code
- add some docs on SROA and ADCE passes
aviatesk added a commit that referenced this pull request Sep 29, 2021
Built on top of #42355:
- add more type signatures
- add more `@nospecialize` decls
- remove dead/debug code
- add some docs on SROA and ADCE passes
aviatesk added a commit that referenced this pull request Sep 29, 2021
Built on top of #42355:
- add more type signatures
- add more `@nospecialize` decls
- remove dead/debug code
- add some docs on SROA and ADCE passes
LilithHafner pushed a commit to LilithHafner/julia that referenced this pull request Feb 22, 2022
```julia
julia> const REF_FLD = :x;

julia> code_typed() do
           r = Ref{Int}(42) # should be eliminated
           x = getfield(r, REF_FLD) # should be eliminated
           return sin(x)
       end |> only
CodeInfo(
1 ─ %1 = Base.sitofp(Float64, 42)::Float64
│   %2 = invoke Base.Math.sin(%1::Float64)::Float64
└──      return %2
) => Float64
```
LilithHafner pushed a commit to LilithHafner/julia that referenced this pull request Mar 8, 2022
```julia
julia> const REF_FLD = :x;

julia> code_typed() do
           r = Ref{Int}(42) # should be eliminated
           x = getfield(r, REF_FLD) # should be eliminated
           return sin(x)
       end |> only
CodeInfo(
1 ─ %1 = Base.sitofp(Float64, 42)::Float64
│   %2 = invoke Base.Math.sin(%1::Float64)::Float64
└──      return %2
) => Float64
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
compiler:optimizer Optimization passes (mostly in base/compiler/ssair/)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants