Skip to content

NaN-related regressions on hard float MIPS in LLVM 21 #149295

@alexrp

Description

@alexrp

In Zig, we're seeing these test failures on all hard float MIPS targets with LLVM 21:

test-std
└─ run test std-mips-linux-gnueabihf-mips32r2-Debug-libc 2834/2926 passed, 5 failed, 87 skipped
error: 'fmt.test.float.special' failed: ====== expected this output: =========
f64: -nan␃

======== instead found this: =========
f64: nan␃

======================================
First difference occurs on line 1:
expected:
f64: -nan
     ^ ('\x2d')
found:
f64: nan
     ^ ('\x6e')
/home/alexrp/Source/ziglang/zig-llvm21/lib/std/testing.zig:672:9: 0xcbd977 in expectEqualStrings (test)
        return error.TestExpectedEqual;
        ^
/home/alexrp/Source/ziglang/zig-llvm21/lib/std/testing.zig:279:5: 0x15b609f in expectFmt__anon_206405 (test)
    return expectEqualStrings(expected, actual);
    ^
/home/alexrp/Source/ziglang/zig-llvm21/lib/std/fmt.zig:1001:9: 0x15b712f in test.float.special (test)
        try expectFmt("f64: -nan", "f64: {}", .{-math.nan(f64)});
        ^
error: 'fmt.test.float.hexadecimal.special' failed: ====== expected this output: =========
f64: -nan␃

======== instead found this: =========
f64: nan␃

======================================
First difference occurs on line 1:
expected:
f64: -nan
     ^ ('\x2d')
found:
f64: nan
     ^ ('\x6e')
/home/alexrp/Source/ziglang/zig-llvm21/lib/std/testing.zig:672:9: 0xcbd977 in expectEqualStrings (test)
        return error.TestExpectedEqual;
        ^
/home/alexrp/Source/ziglang/zig-llvm21/lib/std/testing.zig:279:5: 0x15b800f in expectFmt__anon_206508 (test)
    return expectEqualStrings(expected, actual);
    ^
/home/alexrp/Source/ziglang/zig-llvm21/lib/std/fmt.zig:1012:9: 0x15b9bff in test.float.hexadecimal.special (test)
        try expectFmt("f64: -nan", "f64: {x}", .{-math.nan(f64)});
        ^
error: 'math.isnan.decltest.isSignalNan' failed: /home/alexrp/Source/ziglang/zig-llvm21/lib/std/testing.zig:606:14: 0xcc1713 in expect (test)
    if (!ok) return error.TestUnexpectedResult;
             ^
/home/alexrp/Source/ziglang/zig-llvm21/lib/std/math/isnan.zig:43:9: 0x19f119f in decltest.isSignalNan (test)
        try expect(!isSignalNan(math.nan(T)));
        ^
error: 'math.copysign.decltest.copysign' failed: /home/alexrp/Source/ziglang/zig-llvm21/lib/std/testing.zig:606:14: 0xcc1713 in expect (test)
    if (!ok) return error.TestUnexpectedResult;
             ^
/home/alexrp/Source/ziglang/zig-llvm21/lib/std/math/copysign.zig:23:9: 0x1a0985f in decltest.copysign (test)
        try expect(copysign(@as(T, 6.0), -math.nan(T)) == -6.0);
        ^
error: 'math.signbit.decltest.signbit' failed: /home/alexrp/Source/ziglang/zig-llvm21/lib/std/testing.zig:606:14: 0xcc1713 in expect (test)
    if (!ok) return error.TestUnexpectedResult;
             ^
/home/alexrp/Source/ziglang/zig-llvm21/lib/std/math/signbit.zig:49:5: 0x1a34153 in testFloats__anon_341654 (test)
    try expect(signbit(-math.nan(Type)));
    ^
/home/alexrp/Source/ziglang/zig-llvm21/lib/std/math/signbit.zig:27:5: 0x1a364df in decltest.signbit (test)
    try testFloats(f32);
    ^

I'll attempt to reduce these failures soon; just filing the issue in advance.

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    Status

    Needs Triage

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions