https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126049

--- Comment #1 from Icenowy Zheng <uwu at icenowy dot me> ---
Analyzing the resulting assembly shows that a -inf is introduced when reducing
the vector:

```
        .file   "maxx.c"
        .option nopic
        .attribute arch,
"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_zicsr2p0_zifencei2p0_zmmul1p0_zaamo1p0_zalrsc1p0_zca1p0_zcd1p0_zve32f1p0_zve32x1p0_zve64d1p0_zve64f1p0_zve64x1p0_zvl128b1p0_zvl32b1p0_zvl64b1p0"
        .attribute unaligned_access, 0
        .attribute stack_align, 16
        .text
        .align  1
        .globl  maxx
        .type   maxx, @function
maxx:
.LFB0:
        .cfi_startproc
        lui     a5,%hi(.LC0)
        beq     a1,zero,.L4
        flw     fa5,%lo(.LC0)(a5)
        vsetvli a5,zero,e32,m1,ta,ma
        vfmv.v.f        v1,fa5
.L3:
        vsetvli a5,a1,e32,m1,tu,ma
        vle32.v v2,0(a0)
        slli    a4,a5,2
        sub     a1,a1,a5
        add     a0,a0,a4
        vfmax.vv        v1,v2,v1
        bne     a1,zero,.L3
        lui     a5,%hi(.LC1)
        flw     fa5,%lo(.LC1)(a5)
        vsetvli a5,zero,e32,m1,ta,ma
        vfmv.s.f        v2,fa5
        vfredmax.vs     v1,v1,v2
        vfmv.f.s        fa0,v1
        ret
.L4:
        flw     fa0,%lo(.LC0)(a5)
        ret
        .cfi_endproc
.LFE0:
        .size   maxx, .-maxx
        .section        .srodata.cst4,"aM",@progbits,4
        .align  2
.LC0:
        .word   2143289344
        .align  2
.LC1:
        .word   -8388608
        .ident  "GCC: (GNU) 17.0.0 20260630 (experimental)"
        .section        .note.GNU-stack,"",@progbits
```

(-8388608 here is -inf, and 2143289344 is the initial nan assigned to val).

Reply via email to