Skip to content

optimizer: enable SROA with constant globals#42355

Merged
vtjnash merged 1 commit intomasterfrom
avi/sroa
Sep 23, 2021
Merged

optimizer: enable SROA with constant globals#42355
vtjnash merged 1 commit intomasterfrom
avi/sroa

Conversation

@aviatesk
Copy link
Copy Markdown
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 requested review from Keno and vtjnash September 23, 2021 02:20
@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