https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117234
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Note here is testcase that would show a missed lim on the gimple level due to
trapping:
```
#include <arm_sve.h>
#define vect4f __attribute__((vector_size(4*sizeof(float))))
svfloat32_t f(float a, int t, bool *b)
{
svfloat32_t tt = svdup_f32(0.0);
for (int i =0 ;i < t; i++)
{
if (b[i])
tt = svadd_f32_z(svptrue_b32(),tt,svdup_f32(a));
}
return tt;
}
float f1(float a, int t, bool *b, float c)
{
float tt = {};
for (int i =0 ;i < t; i++)
{
if (b[i])
tt += __builtin_assoc_barrier (-a);
}
return tt;
}
```
Compile with: "-O2 --param=lim-expensive=1 -march=armv8.5-a+sve2". So it is not
just about exceptions; it has an effect on LIM too.