• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

JuliaLang / julia / #37606
77%

Build:
DEFAULT BRANCH: master
Ran 31 Aug 2023 01:31PM UTC
Jobs 1
Files 347
Run time 11min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

31 Aug 2023 03:12AM UTC coverage: 86.167% (-0.03%) from 86.2%
#37606

push

local

web-flow
Refine effects based on optimizer-derived information (#50805)

The optimizer may be able to derive information that is not available to
inference. For example, it may SROA a mutable value to derive additional
constant information. Additionally, some effects, like :consistent are
path-dependent and should ideally be scanned once all optimizations are
done. Now, there is a bit of a complication that we have generally so
far taken the position that the optimizer may do non-IPO-safe
optimizations, although in practice we never actually implemented any.
This was a sensible choice, because we weren't really doing anything
with the post-optimized IR other than feeding it into codegen anyway.
However, with irinterp and this change, there's now two consumers of
IPO-safely optimized IR. I do still think we may at some point want to
run passes that allow IPO-unsafe optimizations, but we can always add
them at the end of the pipeline.

With these changes, the effect analysis is a lot more precise. For
example, we can now derive :consistent for these functions:
```
function f1(b)
    if Base.inferencebarrier(b)
        error()
    end
    return b
end

function f3(x)
    @fastmath sqrt(x)
    return x
end
```
and we can derive `:nothrow` for this function:
```
function f2()
    if Ref(false)[]
        error()
    end
    return true
end
```

414 of 414 new or added lines in 13 files covered. (100.0%)

73383 of 85164 relevant lines covered (86.17%)

12690106.67 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
1
85.89
-0.01% base/compiler/tfuncs.jl
1
92.08
-0.49% stdlib/Serialization/src/Serialization.jl
2
79.64
-2.37% base/compiler/inferencestate.jl
3
92.64
-0.4% base/compiler/ssair/inlining.jl
8
79.67
1.33% base/compiler/ssair/ir.jl
11
87.17
-0.73% base/compiler/abstractinterpretation.jl
13
87.15
-1.97% base/compiler/ssair/irinterp.jl
34
82.97
-0.97% base/compiler/optimize.jl

Uncovered Existing Lines

Lines Coverage ∆ File
1
89.53
-0.58% base/abstractdict.jl
1
94.87
-0.32% base/arrayshow.jl
1
79.19
-0.27% base/binaryplatforms.jl
1
76.24
0.99% base/client.jl
1
95.56
0.0% base/compiler/effects.jl
1
79.67
1.33% base/compiler/ssair/ir.jl
1
93.19
7.83% base/expr.jl
1
75.42
-0.56% base/initdefs.jl
1
56.07
-0.33% base/int.jl
1
86.38
0.0% base/iostream.jl
1
63.58
-0.66% base/libc.jl
1
88.71
-0.81% base/lock.jl
1
85.95
-0.33% base/methodshow.jl
1
68.33
-1.67% base/refpointer.jl
1
88.75
0.89% base/show.jl
1
95.79
-0.38% base/strings/string.jl
1
46.67
-6.67% base/traits.jl
1
83.77
-0.38% stdlib/LibGit2/src/types.jl
1
92.07
-0.14% stdlib/LinearAlgebra/src/matmul.jl
1
82.05
-0.13% stdlib/REPL/src/REPL.jl
1
83.98
-0.11% stdlib/Test/src/Test.jl
2
62.5
-1.56% base/Base.jl
2
84.15
-0.14% base/compiler/ssair/passes.jl
2
56.1
-0.81% base/compiler/ssair/verify.jl
2
85.89
-0.01% base/compiler/tfuncs.jl
2
91.67
-1.85% base/div.jl
2
94.44
-0.44% base/intfuncs.jl
2
48.46
-4.09% base/timing.jl
3
82.97
-0.97% base/compiler/optimize.jl
3
92.64
-0.4% base/compiler/ssair/inlining.jl
3
81.22
6.61% base/ryu/shortest.jl
3
39.52
-0.51% base/toml_parser.jl
4
87.15
-1.97% base/compiler/ssair/irinterp.jl
4
92.73
-7.27% stdlib/Dates/src/accessors.jl
4
92.08
-0.49% stdlib/Serialization/src/Serialization.jl
5
87.17
-0.73% base/compiler/abstractinterpretation.jl
5
72.73
-22.73% base/idset.jl
5
80.34
0.28% base/loading.jl
5
65.71
-14.29% base/ordering.jl
7
95.67
0.26% stdlib/InteractiveUtils/src/codeview.jl
7
87.68
-0.99% stdlib/Profile/src/Profile.jl
8
93.16
-0.84% base/array.jl
8
94.54
-3.36% base/bitset.jl
8
92.49
-0.04% base/twiceprecision.jl
10
79.03
-16.13% stdlib/Dates/src/arithmetic.jl
15
79.64
-2.37% base/compiler/inferencestate.jl
17
91.67
-2.89% stdlib/LinearAlgebra/src/diagonal.jl
19
56.1
-9.27% base/path.jl
19
46.23
1.96% base/util.jl
19
67.24
-22.41% stdlib/Dates/src/query.jl
21
87.86
-1.85% base/float.jl
24
94.85
-0.0% base/range.jl
24
74.0
-3.99% stdlib/Distributed/src/cluster.jl
28
72.6
-12.79% base/parse.jl
36
38.21
-11.96% stdlib/Distributed/src/managers.jl
44
92.66
-0.02% base/abstractarray.jl
45
64.03
-32.37% base/abstractset.jl
56
58.27
-40.3% stdlib/Dates/src/types.jl
60
32.88
-27.03% stdlib/Dates/src/periods.jl
87
73.63
-15.4% base/gmp.jl
121
55.89
-33.15% base/set.jl
191
68.87
-28.73% base/sort.jl
Jobs
ID Job ID Ran Files Coverage
1 #37606.1 31 Aug 2023 01:31PM UTC 347
86.17
Source Files on build #37606
  • Tree
  • List 347
  • Changed 289
  • Source Changed 0
  • Coverage Changed 97
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 95af5a08 on github
  • Prev Build on master
  • Next Build on master
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc