Summary
main's Slang Tests have a second failure independent of the Windows melior one (#589/#590): since #563 (feat(slang): complete lvalues and assignment, merged 2026-07-22 11:36) the MLIR lit test solx-mlir :: conditional.sol fails on Linux ARM64 gnu and macOS x86, deterministically, while Linux x86, macOS arm64 (and Windows, once past #590's fix) pass:
FAIL: solx-mlir :: conditional.sol
Exit Code: 2
solc --mlir-action=print-init …/solx-mlir/tests/lit/conditional.sol 2>/dev/null | FileCheck … # RUN: at line 2
FileCheck error: '<stdin>' is empty.
The failing RUN line is the solc pipeline (line 2), not the solx one (line 1): solc produces empty stdout, and because the RUN line has 2>/dev/null, whatever solc printed on stderr (error or crash report) is invisible in CI.
Evidence
Deterministic per platform across three independent runs of current main content:
The last main run before #563 (29912409528, 10:34) was green on both now-failing legs. In every failing job, conditional.sol is the only failing test (63/64 pass).
Infra is ruled out: passing and failing legs of the same run sync solx-solidity to the same rev (af7333e) and hit same-keyed solc caches (v2-solc-<OS>-<arch>-mlir-boost1.83.0-af7333e…-script622e2341). Same solc source, same test input, divergent result split by platform.
Analysis
#563 did not touch solx-solidity — it rewrote solx-mlir/tests/lit/conditional.sol (among other lit tests) and the solx-slang conditional/lvalue lowering. So the pinned solc's --mlir-action=print-init is being fed new test content it has never been checked against, and on two platform builds it emits nothing while on the others it emits output that satisfies FileCheck. Same source behaving differently per platform build points at platform-dependent behavior in solc's MLIR frontend on the new constructs (UB is the usual suspect), but the 2>/dev/null means we can't see what solc actually said — reproducing on an ARM64 runner with stderr captured is the first diagnostic step.
Why it reached main unseen
Slang Tests' matrix is label-gated and was skipped on both gates:
So the first-ever execution of these lit tests on ARM64/macOS-x86 with #563's content was the post-merge push. Same advisory-gating trap as previously seen with the integration suites.
Suggested next steps
- Diagnose: re-run
solc --mlir-action=print-init solx-mlir/tests/lit/conditional.sol on a Linux ARM64 runner with stderr captured to see the actual error/crash. (Worth fixing generally: the lit RUN lines' 2>/dev/null discards exactly the information needed when this class of failure hits CI.)
- Unblock
main: depending on what stderr shows — fix the solc-side handling, adjust the test, or temporarily XFAIL conditional.sol on the affected platforms with a reference to this issue.
- Process: consider auto-applying
ci:slang (or running the matrix) when solx-mlir//solx-slang/ paths change, and/or running the matrix in merge_group, so slang changes can't merge with the suite skipped on every gate.
Found while verifying #590 (the Windows melior proc-macro fix): this failure is what keeps that verification run red despite the Windows leg passing, and it will keep Slang Tests on main red after #590 merges.
Summary
main's Slang Tests have a second failure independent of the Windows melior one (#589/#590): since #563 (feat(slang): complete lvalues and assignment, merged 2026-07-22 11:36) the MLIR lit testsolx-mlir :: conditional.solfails on Linux ARM64 gnu and macOS x86, deterministically, while Linux x86, macOS arm64 (and Windows, once past #590's fix) pass:The failing RUN line is the solc pipeline (line 2), not the solx one (line 1):
solcproduces empty stdout, and because the RUN line has2>/dev/null, whatever solc printed on stderr (error or crash report) is invisible in CI.Evidence
Deterministic per platform across three independent runs of current
maincontent:mainpost-#563 (29916365666)The last
mainrun before #563 (29912409528, 10:34) was green on both now-failing legs. In every failing job,conditional.solis the only failing test (63/64 pass).Infra is ruled out: passing and failing legs of the same run sync
solx-solidityto the same rev (af7333e) and hit same-keyed solc caches (v2-solc-<OS>-<arch>-mlir-boost1.83.0-af7333e…-script622e2341). Same solc source, same test input, divergent result split by platform.Analysis
#563 did not touch
solx-solidity— it rewrotesolx-mlir/tests/lit/conditional.sol(among other lit tests) and the solx-slang conditional/lvalue lowering. So the pinned solc's--mlir-action=print-initis being fed new test content it has never been checked against, and on two platform builds it emits nothing while on the others it emits output that satisfies FileCheck. Same source behaving differently per platform build points at platform-dependent behavior in solc's MLIR frontend on the new constructs (UB is the usual suspect), but the2>/dev/nullmeans we can't see what solc actually said — reproducing on an ARM64 runner with stderr captured is the first diagnostic step.Why it reached
mainunseenSlang Tests' matrix is label-gated and was skipped on both gates:
8d69f584):matrix.nameskipped — noci:slanglabel.So the first-ever execution of these lit tests on ARM64/macOS-x86 with #563's content was the post-merge push. Same advisory-gating trap as previously seen with the integration suites.
Suggested next steps
solc --mlir-action=print-init solx-mlir/tests/lit/conditional.solon a Linux ARM64 runner with stderr captured to see the actual error/crash. (Worth fixing generally: the lit RUN lines'2>/dev/nulldiscards exactly the information needed when this class of failure hits CI.)main: depending on what stderr shows — fix the solc-side handling, adjust the test, or temporarily XFAILconditional.solon the affected platforms with a reference to this issue.ci:slang(or running the matrix) whensolx-mlir//solx-slang/paths change, and/or running the matrix inmerge_group, so slang changes can't merge with the suite skipped on every gate.Found while verifying #590 (the Windows melior proc-macro fix): this failure is what keeps that verification run red despite the Windows leg passing, and it will keep Slang Tests on
mainred after #590 merges.