aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/pr110496.c
blob: 5a168fde3e1a5dbaffa67ccae17fc868a271b725 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/* { dg-do compile } */
/* { dg-options "-O2" } */

long contents, f_num;
int decide();
int f_MV0__x;
void f() {
  unsigned char *rptr;
  unsigned char valbuf[6];
  rptr = (unsigned char *)contents;  /* { dg-warning "-Wint-to-pointer-cast" "" { target { ! ptr_eq_long } } } */
  if (decide())
    do {
      __builtin_memcpy(valbuf, &f_MV0__x, sizeof(int));
      (&valbuf[0])[4] = (&valbuf[0])[5] = 0;
    } while (0);
  else {
    int MV0__x = f_num;
    __builtin_memcpy(valbuf, &MV0__x, sizeof(int));
    (&valbuf[0])[4] = (&valbuf[0])[5] = 0;
  }
  rptr[1] = valbuf[4];
  rptr[2] = valbuf[5];
  rptr[4] = valbuf[1];
  rptr[5] = valbuf[2];
  __builtin_memset(valbuf, 0, 8);
}