Skip to content

Rewrite early and late optimize pipeline with NewPM#2711

Merged
vchuravy merged 4 commits intomainfrom
vc/split_newpm2
Oct 30, 2025
Merged

Rewrite early and late optimize pipeline with NewPM#2711
vchuravy merged 4 commits intomainfrom
vc/split_newpm2

Conversation

@vchuravy
Copy link
Member

@vchuravy vchuravy commented Oct 28, 2025

No description provided.

@github-actions
Copy link
Contributor

github-actions bot commented Oct 28, 2025

Your PR requires formatting changes to meet the project's style guidelines.
Please consider running Runic (git runic main) to apply these changes.

Click here to view the suggested changes.
diff --git a/src/compiler/optimize.jl b/src/compiler/optimize.jl
index 027f1b22..98afb1bc 100644
--- a/src/compiler/optimize.jl
+++ b/src/compiler/optimize.jl
@@ -73,89 +73,89 @@ function optimize!(mod::LLVM.Module, tm::LLVM.TargetMachine)
         run!(pb, mod, tm)
     end
 
-    function middle_optimize!(second_stage=false)
-    @dispose pb = NewPMPassBuilder() begin
-        registerEnzymeAndPassPipeline!(pb)
-        register!(pb, RewriteGenericMemoryPass())
-        add!(pb, NewPMAAManager()) do aam
-            add!(aam, ScopedNoAliasAA())
-            add!(aam, TypeBasedAA())
-            add!(aam, BasicAA())
+    function middle_optimize!(second_stage = false)
+        return @dispose pb = NewPMPassBuilder() begin
+            registerEnzymeAndPassPipeline!(pb)
+            register!(pb, RewriteGenericMemoryPass())
+            add!(pb, NewPMAAManager()) do aam
+                add!(aam, ScopedNoAliasAA())
+                add!(aam, TypeBasedAA())
+                add!(aam, BasicAA())
         end
-        add!(pb, NewPMModulePassManager()) do mpm
-            add!(mpm, RewriteGenericMemoryPass())
-            add!(mpm, CPUFeaturesPass()) # why is this duplicated?
-
-            add!(mpm, NewPMFunctionPassManager()) do fpm
-                add!(fpm, InstCombinePass())
-                add!(fpm, JLInstSimplifyPass())
-                add!(fpm, SimplifyCFGPass())
-                add!(fpm, SROAPass())
-                add!(fpm, InstCombinePass())
-                add!(fpm, JLInstSimplifyPass())
-                add!(fpm, JumpThreadingPass())
-                add!(fpm, CorrelatedValuePropagationPass())
-                add!(fpm, InstCombinePass())
-                add!(fpm, JLInstSimplifyPass())
-                add!(fpm, ReassociatePass())
-                add!(fpm, EarlyCSEPass())
-                add!(fpm, AllocOptPass())
-
-                add!(fpm, NewPMLoopPassManager(use_memory_ssa=true)) do lpm
-                    add!(lpm, LoopIdiomRecognizePass())
-                    add!(lpm, LoopRotatePass())
-                    add!(lpm, LowerSIMDLoopPass())
-                    add!(lpm, LICMPass())
-                    add!(lpm, JuliaLICMPass())
-                    add!(lpm, SimpleLoopUnswitchPass())
+            add!(pb, NewPMModulePassManager()) do mpm
+                add!(mpm, RewriteGenericMemoryPass())
+                add!(mpm, CPUFeaturesPass()) # why is this duplicated?
+
+                add!(mpm, NewPMFunctionPassManager()) do fpm
+                    add!(fpm, InstCombinePass())
+                    add!(fpm, JLInstSimplifyPass())
+                    add!(fpm, SimplifyCFGPass())
+                    add!(fpm, SROAPass())
+                    add!(fpm, InstCombinePass())
+                    add!(fpm, JLInstSimplifyPass())
+                    add!(fpm, JumpThreadingPass())
+                    add!(fpm, CorrelatedValuePropagationPass())
+                    add!(fpm, InstCombinePass())
+                    add!(fpm, JLInstSimplifyPass())
+                    add!(fpm, ReassociatePass())
+                    add!(fpm, EarlyCSEPass())
+                    add!(fpm, AllocOptPass())
+
+                    add!(fpm, NewPMLoopPassManager(use_memory_ssa = true)) do lpm
+                        add!(lpm, LoopIdiomRecognizePass())
+                        add!(lpm, LoopRotatePass())
+                        add!(lpm, LowerSIMDLoopPass())
+                        add!(lpm, LICMPass())
+                        add!(lpm, JuliaLICMPass())
+                        add!(lpm, SimpleLoopUnswitchPass())
+                    end
+
+                    add!(fpm, InstCombinePass())
+                    add!(fpm, JLInstSimplifyPass())
+                    add!(fpm, NewPMLoopPassManager()) do lpm
+                        add!(lpm, IndVarSimplifyPass())
+                        add!(lpm, LoopDeletionPass())
                 end
-
-                add!(fpm, InstCombinePass())
-                add!(fpm, JLInstSimplifyPass())
-                add!(fpm, NewPMLoopPassManager()) do lpm
-                    add!(lpm, IndVarSimplifyPass())
-                    add!(lpm, LoopDeletionPass())
+                    add!(fpm, LoopUnrollPass(opt_level = 2)) # what opt level?
+                    add!(fpm, AllocOptPass())
+                    add!(fpm, SROAPass())
+                    add!(fpm, GVNPass())
+
+                    # This InstCombine needs to be after GVN
+                    # Otherwise it will generate load chains in GPU code...
+                    add!(fpm, InstCombinePass())
+                    add!(fpm, JLInstSimplifyPass())
+                    add!(fpm, MemCpyOptPass())
+                    add!(fpm, SCCPPass())
+                    add!(fpm, InstCombinePass())
+                    add!(fpm, JLInstSimplifyPass())
+                    add!(fpm, JumpThreadingPass())
+                    add!(fpm, DSEPass())
+                    add!(fpm, AllocOptPass())
+                    add!(fpm, SimplifyCFGPass())
+
+
+                    add!(fpm, NewPMLoopPassManager()) do lpm
+                        add!(lpm, LoopIdiomRecognizePass())
+                        add!(lpm, LoopDeletionPass())
                 end
-                add!(fpm, LoopUnrollPass(opt_level=2)) # what opt level?
-                add!(fpm, AllocOptPass())
-                add!(fpm, SROAPass())
-                add!(fpm, GVNPass())
-
-                # This InstCombine needs to be after GVN
-                # Otherwise it will generate load chains in GPU code...
-                add!(fpm, InstCombinePass())
-                add!(fpm, JLInstSimplifyPass())
-                add!(fpm, MemCpyOptPass())
-                add!(fpm, SCCPPass())
-                add!(fpm, InstCombinePass())
-                add!(fpm, JLInstSimplifyPass())
-                add!(fpm, JumpThreadingPass())
-                add!(fpm, DSEPass())
-                add!(fpm, AllocOptPass())
-                add!(fpm, SimplifyCFGPass())
-
-
-                add!(fpm, NewPMLoopPassManager()) do lpm
-                    add!(lpm, LoopIdiomRecognizePass())
-                    add!(lpm, LoopDeletionPass())
+                    add!(fpm, JumpThreadingPass())
+                    add!(fpm, CorrelatedValuePropagationPass())
+                    if second_stage
+
+                        add!(fpm, ADCEPass())
+                        add!(fpm, InstCombinePass())
+                        add!(fpm, JLInstSimplifyPass())
+
+                        # GC passes
+                        add!(fpm, GCInvariantVerifierPass(strong = false))
+                        add!(fpm, SimplifyCFGPass())
+                        add!(fpm, InstCombinePass())
+                        add!(fpm, JLInstSimplifyPass())
+                    end # second_stage
                 end
-                add!(fpm, JumpThreadingPass())
-                add!(fpm, CorrelatedValuePropagationPass())
-                if second_stage
-
-                add!(fpm, ADCEPass())
-                add!(fpm, InstCombinePass())
-                add!(fpm, JLInstSimplifyPass())
-
-                # GC passes
-                add!(fpm, GCInvariantVerifierPass(strong=false))
-                add!(fpm, SimplifyCFGPass())
-                add!(fpm, InstCombinePass())
-                add!(fpm, JLInstSimplifyPass())
-                end # second_stage
-            end
         end
-        run!(pb, mod, tm)
+            run!(pb, mod, tm)
     end
     end # middle_optimize!
 
@@ -180,7 +180,7 @@ function optimize!(mod::LLVM.Module, tm::LLVM.TargetMachine)
     end
     removeDeadArgs!(mod, tm)
     detect_writeonly!(mod)
-    nodecayed_phis!(mod)
+    return nodecayed_phis!(mod)
 end
 
 function addOptimizationPasses!(mpm::LLVM.NewPMPassManager)
@@ -200,7 +200,7 @@ function addOptimizationPasses!(mpm::LLVM.NewPMPassManager)
 
     add!(mpm, AlwaysInlinerPass())
 
-    add!(mpm, NewPMFunctionPassManager()) do fpm
+    return add!(mpm, NewPMFunctionPassManager()) do fpm
         # Running `memcpyopt` between this and `sroa` seems to give `sroa` a hard time
         # merging the `alloca` for the unboxed data and the `alloca` created by the `alloc_opt`
         # pass.
@@ -224,7 +224,7 @@ function addOptimizationPasses!(mpm::LLVM.NewPMPassManager)
         # remove those before optimizing loops.
         add!(fpm, AllocOptPass())
 
-        add!(fpm, NewPMLoopPassManager(use_memory_ssa=true)) do lpm
+        add!(fpm, NewPMLoopPassManager(use_memory_ssa = true)) do lpm
             add!(lpm, LoopRotatePass())
             # moving IndVarSimplify here prevented removing the loop in perf_sumcartesian(10:-1:1)
             add!(lpm, LoopIdiomRecognizePass())
@@ -240,7 +240,7 @@ function addOptimizationPasses!(mpm::LLVM.NewPMPassManager)
             add!(lpm, IndVarSimplifyPass())
             add!(lpm, LoopDeletionPass())
         end
-        add!(fpm, LoopUnrollPass(opt_level=2))
+        add!(fpm, LoopUnrollPass(opt_level = 2))
 
         # Run our own SROA on heap objects before LLVM's
         add!(fpm, AllocOptPass())
@@ -284,13 +284,13 @@ function addOptimizationPasses!(mpm::LLVM.NewPMPassManager)
 end
 
 function addMachinePasses!(mpm::LLVM.NewPMPassManager)
-    add!(mpm, NewPMFunctionPassManager()) do fpm
+    return add!(mpm, NewPMFunctionPassManager()) do fpm
         if VERSION < v"1.12.0-DEV.1390"
             add!(fpm, CombineMulAddPass())
         end
         add!(fpm, DivRemPairsPass())
         add!(fpm, DemoteFloat16Pass())
-        add!(fpm, GVNPass())              
+        add!(fpm, GVNPass())
     end
 end
 
@@ -317,7 +317,7 @@ function addJuliaLegalizationPasses!(mpm::LLVM.NewPMPassManager, lower_intrinsic
         end
         # We need these two passes and the instcombine below
         # after GC lowering to let LLVM do some constant propagation on the tags.
-        # and remove some unnecessary write barrier checks.        
+        # and remove some unnecessary write barrier checks.
         add!(mpm, NewPMFunctionPassManager()) do fpm
             add!(fpm, GVNPass())
             add!(fpm, SCCPPass())
@@ -330,10 +330,12 @@ function addJuliaLegalizationPasses!(mpm::LLVM.NewPMPassManager, lower_intrinsic
             add!(fpm, InstCombinePass())
             add!(fpm, JLInstSimplifyPass())
             aggressiveSimplifyCFGOptions =
-                (forward_switch_cond=true,
-                   switch_range_to_icmp=true,
-                   switch_to_lookup=true,
-                   hoist_common_insts=true)
+                (
+                forward_switch_cond = true,
+                switch_range_to_icmp = true,
+                switch_to_lookup = true,
+                hoist_common_insts = true,
+            )
             add!(fpm, SimplifyCFGPass(; aggressiveSimplifyCFGOptions...))
         end
     else
diff --git a/src/llvm/transforms.jl b/src/llvm/transforms.jl
index 5462fd43..67255c3a 100644
--- a/src/llvm/transforms.jl
+++ b/src/llvm/transforms.jl
@@ -2372,7 +2372,7 @@ end
 function rewrite_generic_memory!(mod::LLVM.Module)
     @static if VERSION < v"1.11-"
         return false
-    else    
+    else
         for f in functions(mod), bb in blocks(f)
             iter = LLVM.API.LLVMGetFirstInstruction(bb)
             while iter != C_NULL
@@ -2381,7 +2381,7 @@ function rewrite_generic_memory!(mod::LLVM.Module)
                 if !isa(inst, LLVM.LoadInst)
                     continue
                 end
-        
+
                 if isa(operands(inst)[1], LLVM.ConstantExpr)
                     legal2, obj = absint(inst)
                     if legal2 && obj isa Memory && obj == typeof(obj).instance

Base automatically changed from vc/split_newpm to main October 28, 2025 19:27
@vchuravy vchuravy changed the title NewPM support -- part 2 NewPM -- late optimize and attributor Oct 28, 2025
@codecov
Copy link

codecov bot commented Oct 28, 2025

Codecov Report

❌ Patch coverage is 99.25926% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 72.48%. Comparing base (107b327) to head (bacc70c).
⚠️ Report is 4 commits behind head on main.

Files with missing lines Patch % Lines
src/compiler/optimize.jl 99.55% 1 Missing ⚠️
src/llvm/transforms.jl 97.87% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2711      +/-   ##
==========================================
- Coverage   72.61%   72.48%   -0.14%     
==========================================
  Files          58       58              
  Lines       18746    18635     -111     
==========================================
- Hits        13613    13508     -105     
+ Misses       5133     5127       -6     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@github-actions
Copy link
Contributor

github-actions bot commented Oct 28, 2025

Benchmark Results

main bacc70c... main / bacc70c...
basics/make_zero/namedtuple 0.0515 ± 0.0026 μs 0.0512 ± 0.0032 μs 1.01 ± 0.081
basics/make_zero/struct 0.252 ± 0.005 μs 0.253 ± 0.0054 μs 0.995 ± 0.029
basics/overhead 4.65 ± 0.01 ns 5.26 ± 0.92 ns 0.884 ± 0.15
basics/remake_zero!/namedtuple 0.24 ± 0.0082 μs 0.24 ± 0.0067 μs 1 ± 0.044
basics/remake_zero!/struct 0.232 ± 0.0079 μs 0.233 ± 0.0089 μs 0.999 ± 0.051
fold_broadcast/multidim_sum_bcast/1D 10.3 ± 0.28 μs 10.3 ± 0.43 μs 0.995 ± 0.05
fold_broadcast/multidim_sum_bcast/2D 12.2 ± 0.24 μs 12.2 ± 0.23 μs 1 ± 0.027
time_to_load 1.24 ± 0.027 s 1.25 ± 0.014 s 0.993 ± 0.025

Benchmark Plots

A plot of the benchmark results has been uploaded as an artifact at https://github.com/EnzymeAD/Enzyme.jl/actions/runs/18924163508/artifacts/4411690206.

This was referenced Oct 28, 2025
@giordano giordano added the Julia v1.12 Related to compatibility with Julia v1.12 label Oct 28, 2025
@vchuravy vchuravy changed the title NewPM -- late optimize and attributor Rewrite early and late optimize pipeline with NewPM Oct 29, 2025
@vchuravy
Copy link
Member Author

Sigh the threads test seem to be reliably crashing without error output...

@giordano
Copy link
Member

Sigh the threads test seem to be reliably crashing without error output...

Assuming you're referring to the Julia 1.11 - ubuntu-24.04 - default - packaged libEnzyme - assertions=true job, that's been failing in main for a while, and in the parent commit of #2690 we had output (it looks like ParallelTestRunner.jl is swallowing the output in this case, CC @maleadt): https://github.com/EnzymeAD/Enzyme.jl/actions/runs/18800981569/job/53649977969#step:11:373

Output generated during execution of 'multi-threads':
┌ GC tracked values may not appear in GEP expressions. You may have to decay the value first
│ 	  %.repack.i = getelementptr inbounds { ptr, ptr addrspace(10) }, ptr addrspace(10) %57, i64 0, i32 0, !dbg !63
│ GC tracked values may not appear in GEP expressions. You may have to decay the value first
│ 	  %.repack34.i = getelementptr inbounds { ptr, ptr addrspace(10) }, ptr addrspace(10) %57, i64 0, i32 1, !dbg !63
│ 
│ [16274] signal 6 (-6): Aborted
│ in expression starting at /home/runner/work/Enzyme.jl/Enzyme.jl/test/threads.jl:83
│ pthread_kill at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
│ gsignal at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
│ abort at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
│ run at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/src/llvm-gc-invariant-verifier.cpp:195
│ run at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/usr/include/llvm/IR/PassManagerInternal.h:89
│ _ZN4llvm27ModuleToFunctionPassAdaptor3runERNS_6ModuleERNS_15AnalysisManagerIS1_JEEE at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/usr/bin/../lib/libLLVM-16jl.so (unknown line)
│ run at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/usr/include/llvm/IR/PassManagerInternal.h:89
│ _ZN4llvm11PassManagerINS_6ModuleENS_15AnalysisManagerIS1_JEEEJEE3runERS1_RS3_ at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/usr/bin/../lib/libLLVM-16jl.so (unknown line)
│ run at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/src/pipeline.cpp:777
│ operator() at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/src/jitlayers.cpp:1298
│ withModuleDo<(anonymous namespace)::OptimizerT<4>::operator()(llvm::orc::ThreadSafeModule, llvm::orc::MaterializationResponsibility&)::<lambda(llvm::Module&)> > at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/usr/include/llvm/ExecutionEngine/Orc/ThreadSafeModule.h:136 [inlined]
│ operator() at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/src/jitlayers.cpp:1259 [inlined]
│ CallImpl<(anonymous namespace)::OptimizerT<4> > at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/usr/include/llvm/ADT/FunctionExtras.h:221
│ _ZN4llvm3orc16IRTransformLayer4emitESt10unique_ptrINS0_29MaterializationResponsibilityESt14default_deleteIS3_EENS0_16ThreadSafeModuleE at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/usr/bin/../lib/libLLVM-16jl.so (unknown line)
│ _ZN4llvm3orc16IRTransformLayer4emitESt10unique_ptrINS0_29MaterializationResponsibilityESt14default_deleteIS3_EENS0_16ThreadSafeModuleE at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/usr/bin/../lib/libLLVM-16jl.so (unknown line)
│ _ZN4llvm3orc16IRTransformLayer4emitESt10unique_ptrINS0_29MaterializationResponsibilityESt14default_deleteIS3_EENS0_16ThreadSafeModuleE at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/usr/bin/../lib/libLLVM-16jl.so (unknown line)
│ _ZN4llvm3orc31BasicIRLayerMaterializationUnit11materializeESt10unique_ptrINS0_29MaterializationResponsibilityESt14default_deleteIS3_EE at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/usr/bin/../lib/libLLVM-16jl.so (unknown line)
│ _ZN4llvm3orc19MaterializationTask3runEv at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/usr/bin/../lib/libLLVM-16jl.so (unknown line)
│ _ZN4llvm6detail18UniqueFunctionBaseIvJSt10unique_ptrINS_3orc4TaskESt14default_deleteIS4_EEEE8CallImplIPFvS7_EEEvPvRS7_ at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/usr/bin/../lib/libLLVM-16jl.so (unknown line)
│ _ZN4llvm3orc16ExecutionSession22dispatchOutstandingMUsEv at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/usr/bin/../lib/libLLVM-16jl.so (unknown line)
│ _ZN4llvm3orc16ExecutionSession17OL_completeLookupESt10unique_ptrINS0_21InProgressLookupStateESt14default_deleteIS3_EESt10shared_ptrINS0_23AsynchronousSymbolQueryEESt8functionIFvRKNS_8DenseMapIPNS0_8JITDylibENS_8DenseSetINS0_15SymbolStringPtrENS_12DenseMapInfoISF_vEEEENSG_ISD_vEENS_6detail12DenseMapPairISD_SI_EEEEEE at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/usr/bin/../lib/libLLVM-16jl.so (unknown line)
│ _ZN4llvm3orc25InProgressFullLookupState8completeESt10unique_ptrINS0_21InProgressLookupStateESt14default_deleteIS3_EE at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/usr/bin/../lib/libLLVM-16jl.so (unknown line)
│ _ZN4llvm3orc16ExecutionSession19OL_applyQueryPhase1ESt10unique_ptrINS0_21InProgressLookupStateESt14default_deleteIS3_EENS_5ErrorE at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/usr/bin/../lib/libLLVM-16jl.so (unknown line)
│ _ZN4llvm3orc16ExecutionSession6lookupENS0_10LookupKindERKSt6vectorISt4pairIPNS0_8JITDylibENS0_19JITDylibLookupFlagsEESaIS8_EENS0_15SymbolLookupSetENS0_11SymbolStateENS_15unique_functionIFvNS_8ExpectedINS_8DenseMapINS0_15SymbolStringPtrENS_18JITEvaluatedSymbolENS_12DenseMapInfoISI_vEENS_6detail12DenseMapPairISI_SJ_EEEEEEEEESt8functionIFvRKNSH_IS6_NS_8DenseSetISI_SL_EENSK_IS6_vEENSN_IS6_SV_EEEEEE at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/usr/bin/../lib/libLLVM-16jl.so (unknown line)
│ _ZN4llvm3orc16ExecutionSession6lookupERKSt6vectorISt4pairIPNS0_8JITDylibENS0_19JITDylibLookupFlagsEESaIS7_EENS0_15SymbolLookupSetENS0_10LookupKindENS0_11SymbolStateESt8functionIFvRKNS_8DenseMapIS5_NS_8DenseSetINS0_15SymbolStringPtrENS_12DenseMapInfoISI_vEEEENSJ_IS5_vEENS_6detail12DenseMapPairIS5_SL_EEEEEE at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/usr/bin/../lib/libLLVM-16jl.so (unknown line)
│ addModule at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/src/jitlayers.cpp:1875
│ jl_add_to_ee at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/src/jitlayers.cpp:2306
│ _jl_compile_codeinst at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/src/jitlayers.cpp:277
│ jl_generate_fptr_impl at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/src/jitlayers.cpp:536
│ jl_compile_method_internal at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/src/gf.c:2538 [inlined]
│ jl_compile_method_internal at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/src/gf.c:2425
│ _jl_invoke at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/src/gf.c:2942 [inlined]
│ ijl_apply_generic at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/src/gf.c:3127
│ jl_apply at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/src/julia.h:2157 [inlined]
│ start_task at /home/runner/work/Enzyme.jl/Enzyme.jl/julia/src/task.c:1202
│ Allocations: 70429442 (Pool: 70427939; Big: 1503); GC: 43
│ GC tracked values may not appear in GEP expressions. You may have to decay the value first
│ 	  %.repack.i = getelementptr inbounds { ptr, ptr addrspace(10) }, ptr addrspace(10) %57, i64 0, i32 0, !dbg !63
│ GC tracked values may not appear in GEP expressions. You may have to decay the value first
│ 	  %.repack34.i = getelementptr inbounds { ptr, ptr addrspace(10) }, ptr addrspace(10) %57, i64 0, i32 1, !dbg !63
│ 
│ [16299] signal 6 (-6): Aborted
│ in expression starting at /home/runner/work/Enzyme.jl/Enzyme.jl/test/threads.jl:83
│ pthread_kill at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
│ gsignal at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
│ abort at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
│ GC tracked values may not appear in GEP expressions. You may have to decay the value first
│ 	  %.repack.i = getelementptr inbounds { ptr, ptr addrspace(10) }, ptr addrspace(10) %57, i64 0, i32 0, !dbg !63
│ GC tracked values may not appear in GEP expressions. You may have to decay the value first
└ 	  %.repack34.i = getelementptr inbounds { ptr, ptr addrspace(10) }, ptr addrspace(10) %57, i64 0, i32 1, !dbg !63

@wsmoses
Copy link
Member

wsmoses commented Oct 30, 2025

that test has been blocked by a julia patch release for a while =/. not in our control -- specifically JuliaLang/julia@8230e8b

@vchuravy vchuravy merged commit a0e9679 into main Oct 30, 2025
46 of 49 checks passed
@vchuravy vchuravy deleted the vc/split_newpm2 branch October 30, 2025 03:02
@vchuravy
Copy link
Member Author

Well that's good then xD

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

Labels

do not squash Julia v1.12 Related to compatibility with Julia v1.12

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants