Summary
Seven integration tests in loom-core/tests/optimization_tests.rs fail — not a regression: they fail identically on v1.1.1 (pre-dating the #145/#147 work). They were masked because loom's CI Test matrix never completed: pre-v1.1.2 it was cancelled by the (upstream) Rocq Formal Proofs failure, and on v1.1.2 the #147 inline livelock hung it. The #147 fix (v1.1.3) makes the matrix complete for the first time, surfacing these.
Failing tests
test_licm_simple_hoist, test_licm_hoist_constants, test_licm_global_get_invariant, test_licm_non_consecutive_global_get, test_licm_expression_tree_hoisting
test_dce_dead_block, test_remove_dead_code_after_return
Symptom
The LICM pass does not hoist loop-invariant code: e.g. test_licm_simple_hoist panics with
Expected loop body to shrink after LICM. Before: 10, After: 10
No verifier revert is logged — the LICM/DCE transform itself is not producing the expected result. (My #145/#147 changes touch inline_functions + the verifier, not LICM/DCE; confirmed unrelated by the v1.1.1 baseline.)
Baseline evidence
# on tag v1.1.1, --features verification:
test test_dce_dead_block ... FAILED
test test_licm_simple_hoist ... FAILED (Before: 10, After: 10)
test result: FAILED. 0 passed; 2 failed; ...
Why it matters
Now that the matrix completes (v1.1.3), these are real red signals on every PR. Either the LICM/DCE passes regressed long ago, or the test expectations drifted from the passes' actual (conservative) behavior. Needs triage: fix the passes or update the assertions to match intended behavior.
Summary
Seven integration tests in
loom-core/tests/optimization_tests.rsfail — not a regression: they fail identically on v1.1.1 (pre-dating the #145/#147 work). They were masked because loom's CI Test matrix never completed: pre-v1.1.2 it was cancelled by the (upstream)Rocq Formal Proofsfailure, and on v1.1.2 the #147 inline livelock hung it. The #147 fix (v1.1.3) makes the matrix complete for the first time, surfacing these.Failing tests
test_licm_simple_hoist,test_licm_hoist_constants,test_licm_global_get_invariant,test_licm_non_consecutive_global_get,test_licm_expression_tree_hoistingtest_dce_dead_block,test_remove_dead_code_after_returnSymptom
The LICM pass does not hoist loop-invariant code: e.g.
test_licm_simple_hoistpanics withNo verifier revert is logged — the LICM/DCE transform itself is not producing the expected result. (My #145/#147 changes touch
inline_functions+ the verifier, not LICM/DCE; confirmed unrelated by the v1.1.1 baseline.)Baseline evidence
Why it matters
Now that the matrix completes (v1.1.3), these are real red signals on every PR. Either the LICM/DCE passes regressed long ago, or the test expectations drifted from the passes' actual (conservative) behavior. Needs triage: fix the passes or update the assertions to match intended behavior.