arm32: default to arm1176jzf-s so the gnueabihf triple actually has an FPU,

arm32: implement AAPCS32 homogeneous float aggregates incl unions,
arm32: fix reversed arguments in the small-struct return coercion,abi test: __aeabi_uldivmod so the arm32 corpus links
This commit is contained in:
kalsprite
2026-08-14 18:08:11 -07:00
parent 1e2d91c38b
commit 9047c60ec1
3 changed files with 86 additions and 11 deletions

View File

@@ -46,6 +46,13 @@ gb_internal String get_default_microarchitecture() {
}
} else if (build_context.metrics.arch == TargetArch_riscv64) {
default_march = str_lit("generic-rv64");
} else if (build_context.metrics.arch == TargetArch_arm32) {
// The arm32 triple is `gnueabihf`, and the hard-float ABI passes floating point in the
// VFP registers. `generic` has no FPU at all. LLVM cannot honor the ABI its own
// triple asks for and quietly falls back to the soft-float convention.
//
// `arm1176jzf-s` is what clang picks by default for this same triple.
default_march = str_lit("arm1176jzf-s");
}
return default_march;