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

--- Comment #11 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #10)
> If it is __builtin_clear_padding only, I'll have a look...

After the __builtin_clear_padding is exposed and before the IPA passes, the IR
looks like:

  l_26[1].f0 = 4;
  MEM <long int> [(struct S0[2] *)&l_26 + 16B] = 25770065925;
  func_23 (l_26[1], func_2_l_27);

So here is another testcase which you can reproduce it with -O3
-fno-strict-aliasing (because I voilate aliasing rules to get a similar enough
IR):
```
struct S0 {
  int f0;
  short f1;
  unsigned f2 : 7;
  short f3;
} func_2_l_27;
int *g_389;
int safe_sub_func_int16_t_s_s(void);
void safe_lshift_func_uint8_t_u_s(int);
void func_23(struct S0 p_24, struct S0 p_25) {
  int *l_1051 = g_389;
  if (safe_sub_func_int16_t_s_s())
    for (;;)
      safe_lshift_func_uint8_t_u_s(p_24.f1);
  *l_1051 = p_25.f0;
}
void func_2(void) {
  struct S0 l_26[2];
  l_26[1].f0 = 4;
  ((long long*)&l_26)[2] = 25770065925;
  func_23(l_26[1], func_2_l_27);
}
```

Reply via email to