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

JuliaLang / julia / 1652
78%
master: 78%

Build:
Build:
LAST BUILD BRANCH: mg/neoverse-512tvb
DEFAULT BRANCH: master
Ran 21 Apr 2026 01:52AM UTC
Jobs 3
Files 351
Run time 1min
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

20 Apr 2026 08:38PM UTC coverage: 77.962% (+0.3%) from 77.623%
1652

push

buildkite

web-flow
codegen: Propagate `ipo_purity_bits` to LLVM function attributes (#61394)

Translate Julia's inferred effects (consistent, effect_free, nothrow,
terminates, notaskstate) into LLVM function attributes so that
middle-end passes like GVN, LICM, and DSE can exploit them.

The key design insight is that GC interactions don't need to be visible
before GC lowering. Call-site declarations get optimistic memory
attributes (e.g. memory(argmem: read)) that enable pre-GC optimizations,
then LateLowerGCFrame widens them to memory(readwrite) before safepoint
analysis so post-GC passes see correct semantics.

Attributes added:
- nounwind: for nothrow functions (with uwtable(async) on definitions
  to preserve .eh_frame for stack scanning)
- mustprogress: for terminating functions
- willreturn: for nothrow+terminating functions
- memory(argmem: read): for consistent+effect_free functions with no
  user-facing pointer arguments (call-site declarations only)
- readnone on gcstack param: for notaskstate functions, so LICM can
  hoist pure calls past heap stores
- "julia.safepoint" marker: on all call-site declarations, used by
  LateLowerGCFrame to identify and widen optimistic attrs

LateLowerGCFrame strips all optimistic attributes (memory effects,
readnone on gcstack) from both call instructions and function
declarations before safepoint analysis runs.

Previously explored in #47844

Developed with Claude

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Gabriel Baraldi <28694980+gbaraldi@users.noreply.github.com>

65490 of 84002 relevant lines covered (77.96%)

23535049.1 hits per line

Coverage Regressions

Lines Coverage ∆ File
392
79.16
1.17% base/loading.jl
368
73.93
1.47% Compiler/src/tfuncs.jl
324
73.33
-11.35% base/precompilation.jl
310
85.66
2.35% Compiler/src/abstractinterpretation.jl
111
0.4
-0.39% Compiler/src/ssair/verify.jl
107
37.57
0.2% base/client.jl
99
69.6
-18.63% base/shell.jl
80
47.87
0.0% base/binaryplatforms.jl
73
80.88
6.8% base/runtime_internals.jl
72
83.95
0.12% Compiler/src/typeinfer.jl
67
64.99
0.0% base/expr.jl
66
73.46
-2.68% base/path.jl
64
14.47
-40.53% base/cpuid.jl
63
83.35
0.25% base/stream.jl
52
71.05
-0.81% base/show.jl
52
66.77
12.45% Compiler/src/typelimits.jl
51
80.6
0.85% base/strings/search.jl
49
90.67
0.01% base/abstractarray.jl
49
85.28
-0.58% base/essentials.jl
43
36.64
-15.7% Compiler/src/ssair/show.jl
41
76.45
-1.15% base/regex.jl
40
78.31
-1.57% base/stacktraces.jl
40
95.77
0.1% stdlib/Test/src/Test.jl
37
81.5
0.06% stdlib/REPL/src/REPL.jl
32
95.14
-0.05% stdlib/REPL/src/REPLCompletions.jl
31
89.49
-2.59% base/strings/string.jl
27
94.2
0.0% base/range.jl
27
80.69
2.17% Compiler/src/inferenceresult.jl
22
78.26
-0.76% base/strings/annotated_io.jl
20
25.0
0.0% base/Base.jl
20
67.06
-4.74% base/float.jl
19
88.6
0.45% base/cmd.jl
19
93.73
-1.64% base/set.jl
17
89.62
0.0% base/indices.jl
16
81.95
1.89% base/process.jl
14
95.95
0.01% base/strings/util.jl
11
51.72
0.0% base/initdefs.jl
7
73.58
-7.67% Compiler/src/methodtable.jl
7
96.3
0.0% stdlib/InteractiveUtils/src/macros.jl
4
91.26
0.17% base/permuteddimsarray.jl
4
95.51
0.55% base/threadingconstructs.jl
3
79.31
1.85% base/parse.jl
3
84.34
0.09% base/toml/printer.jl
3
85.85
0.0% base/tuple.jl
3
69.86
-1.03% base/util.jl
2
96.33
-1.83% base/Enums.jl
2
82.29
3.0% Compiler/src/typelattice.jl
2
95.98
0.0% stdlib/Dates/src/periods.jl
2
92.51
-0.56% stdlib/Random/src/generation.jl
1
85.05
0.0% base/broadcast.jl
1
96.55
0.0% base/locks-mt.jl
1
80.95
-0.48% base/missing.jl
1
91.14
-0.12% base/multidimensional.jl
1
93.5
0.4% base/operators.jl
1
61.36
-1.43% base/simdloop.jl
1
86.67
-1.33% base/uuid.jl
1
38.85
-0.25% base/version.jl
1
94.23
-0.38% stdlib/LibGit2/src/types.jl
Jobs
ID Job ID Ran Files Coverage
1652 linux-coverage - 1652 21 Apr 2026 05:30AM UTC 350
76.63
1652 windows-coverage - 1652 21 Apr 2026 04:39AM UTC 317
76.5
1652 macos-coverage - 1652 21 Apr 2026 01:52AM UTC 351
76.12
Source Files on build 1652
  • Tree
  • List 351
  • Changed 113
  • Source Changed 58
  • Coverage Changed 109
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • d50d2a54 on github
  • Prev Build on main (#1649)
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

© 2026 Coveralls, Inc