[Bug rtl-optimization/110215] RA fails to allocate register when loop invariant lives across calls
pinskia at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Jun 12 06:37:43 GMT 2023
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.
More information about the Gcc-bugs
mailing list