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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|RA fails to allocate        |RA fails to allocate
                   |register when loop          |register when loop
                   |invariant lives through EH  |invariant lives across
                   |region                      |calls
           Keywords|ra                          |

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
happens on aarch64 also:
```
.L41:
        ldr     q31, [x0]
        ldr     q29, [sp, 112]
        fabd    v31.4s, v29.4s, v31.4s
        fadd    v30.4s, v30.4s, v31.4s
        str     q31, [x0], 16
        cmp     x1, x0
        bne     .L41
```


Gimple level looks like:
  <bb 19> [local count: 372044713]:
  # vect_sum_lsm.128_11.134_88 = PHI <vect__7.142_39(19), { 0.0, 0.0, 0.0, 0.0
}(18)>
  # ivtmp.155_176 = PHI <ivtmp.155_175(19), ivtmp.155_174(18)>
  _173 = (void *) ivtmp.155_176;
  vect__4.137_85 = MEM <vector(4) float> [(value_type &)_173];
  vect__5.138_74 = vect_cst__84 - vect__4.137_85;
  vect__38.139_68 = ABS_EXPR <vect__5.138_74>;
  MEM <vector(4) float> [(value_type &)_173] = vect__38.139_68;
  vect__7.142_39 = vect__38.139_68 + vect_sum_lsm.128_11.134_88;
  ivtmp.155_175 = ivtmp.155_176 + 16;
  if (_6 != ivtmp.155_175)
    goto <bb 19>; [83.33%]
  else
    goto <bb 20>; [16.67%]

That would be vect_cst__84 .

So what I think is happening is the spilling is happening is not related at all
to EH but rather a call.

Reply via email to