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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
                 CC|                            |rsandifo at gcc dot gnu.org
            Summary|SEGV in late-combine        |[15 Regression] SEGV in
                   |(rtl_ssa::function_info::re |late-combine
                   |move_use)                   |(rtl_ssa::function_info::re
                   |                            |move_use)
   Last reconfirmed|                            |2025-01-20
             Status|UNCONFIRMED                 |NEW
   Target Milestone|---                         |15.0

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Confirmed.

This is related to frm (floating point rounding mode register):

trying to combine definition of r69 in:
   67: frm:SI=frm:SI
into:
   63: v1:V2SF={(unspec[const_vector,0x2,0x2,0x2,0x2,0x7,vl:SI,vtype:SI,frm:SI]
91)?v1:V2SF-v2:V2SF:unspec[zero:DI] 90}
      REG_EQUIV [s3:DI]
successfully matched this instruction to pred_subv2sf:
(set (reg:V2SF 97 v1 [orig:148 vect__3.12_19 ] [148])
    (if_then_else:V2SF (unspec:V2BI [
                (const_vector:V2BI [
                        (const_int 1 [0x1]) repeated x2
                    ])
                (const_int 2 [0x2]) repeated x4
                (const_int 7 [0x7])
                (reg:SI 66 vl)
                (reg:SI 67 vtype)
                (reg:SI 69 frm)
            ] UNSPEC_VPREDICATE)
        (minus:V2SF (reg:V2SF 97 v1 [orig:149 MEM <vector(2) floatD.36>
[(floatD.36 *)h_29 clique 1 base 1] ] [149])
            (reg:V2SF 98 v2 [orig:150 MEM <vector(2) floatD.36> [(floatD.36
*)&bD.2797 clique 1 base 0] ] [150]))
        (unspec:V2SF [
                (reg:DI 0 zero)
            ] UNSPEC_VUNDEF)))
   63: v1:V2SF={(unspec[const_vector,0x2,0x2,0x2,0x2,0x7,vl:SI,vtype:SI,frm:SI]
91)?v1:V2SF-v2:V2SF:unspec[zero:DI] 90}
      REG_EQUIV [s3:DI]
successfully matched this instruction to pred_subv2sf:
(set (reg:V2SF 97 v1 [orig:148 vect__3.12_19 ] [148])
    (if_then_else:V2SF (unspec:V2BI [
                (const_vector:V2BI [
                        (const_int 1 [0x1]) repeated x2
                    ])
                (const_int 2 [0x2]) repeated x4
                (const_int 7 [0x7])
                (reg:SI 66 vl)
                (reg:SI 67 vtype)
                (reg:SI 69 frm)
            ] UNSPEC_VPREDICATE)
        (minus:V2SF (reg:V2SF 97 v1 [orig:149 MEM <vector(2) floatD.36>
[(floatD.36 *)h_29 clique 1 base 1] ] [149])
            (reg:V2SF 98 v2 [orig:150 MEM <vector(2) floatD.36> [(floatD.36
*)&bD.2797 clique 1 base 0] ] [150]))
        (unspec:V2SF [
                (reg:DI 0 zero)
            ] UNSPEC_VUNDEF)))
original cost = 0 + 4 + 4 (weighted: 31.999999), replacement cost = 4 + 4
(weighted: 31.999999); keeping replacement
verify found no changes in insn with uid = 63.


I am not sure if representing frm as a normal SI register is something which is
ok but I could be wrong.

Reply via email to