Skip to content

0.20.2: i686 --- the x87 routines kept, atomic.c for sixty-four bit atomics on four-aligned objects - #73

Merged
Sunrisepeak merged 2 commits into
mainfrom
feat/i686
Nov 13, 2026
Merged

Sunrisepeak merged 2 commits into
mainfrom
feat/i686

Conversation

@Sunrisepeak

@Sunrisepeak Sunrisepeak commented Nov 13, 2026 •

Copy link
Copy Markdown
Member

openkal-llvm-runtime 0.20.2: the compiler-rt selection for i686-linux-musl (design K7; openkal 0.25.1, clause 5.5). No change for any 64-bit target.

File set On i686 Why
*xf*.c, *xc3.c (x87 long double) kept the type is real on i386, as on x86_64; the exclusion's condition becomes "not x86_64 and not i686"
atomic.c compiled a 64-bit atomic on an object not provably 8-aligned (an int64_t field, 4-aligned on i386) lowers to __atomic_load; mimalloc's statistics do so (measured: undefined symbol: __atomic_load). It uses its own spin locks and no system call. Elsewhere it stays out, as before (the blanket !atomic*.c became !atomic_*.c plus !atomic.c for every architecture but i686, because an exclusion anywhere in the merged list wins over an inclusion).

Verification (local, x86_64 Linux, above openkal-linux#55 and the openkal-musl i386 branch through a local openkal-platform with i686-linux-musl hosted):

  • a C++23 program: import std, a thrown and caught exception, four std::jthreads, std::format("{:>6.2f}|{}", 3.14159, 1LL << 40), a file stream, std::map -- all held, ELF32 static;
  • the openkal conformance suite (full,optional): 407 held, 0 did not hold, the same five not observed as on x86_64.

The CI leg for i686-linux-musl belongs where the rows are hosted (openkal-platform), after openkal-linux 0.26.2 and openkal-musl's i386 release are indexed.

The branch graph (tools/branch-graph.sh) takes a backend's default branch only when its version is within the range openkal-musl states for it, and otherwise the newest release within that range: openkal-windows main is on 0.22 while the family names ^0.21.1, and the Windows host's graph was refused (mcpplibs.os bounds openkal-windows below 0.22).

Without a branch of the same name a backend's default branch was taken. openkal-
windows main is on 0.22 while openkal-musl names ^0.21.1 and mcpplibs.os bounds
it below 0.22, so the Windows host's graph was refused. The default branch is
taken when its version is within the stated range, and otherwise the newest
release within it.
@Sunrisepeak
Sunrisepeak merged commit 52dc6e9 into main Nov 13, 2026
11 checks passed
@Sunrisepeak
Sunrisepeak deleted the feat/i686 branch November 13, 2026 05:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant