/* { dg-do compile } */
/* { dg-options "-O3" } */

typedef int int32_t __attribute__((mode (__SI__)));
typedef unsigned uint32_t __attribute__((mode (__SI__)));

void c(int32_t *d, char *g)
{
  char *a, *b, *e;
  int f;
  for (; f; f -= 8) {
      *d++ = *e++ | (uint32_t)*g++ << 8 | (uint32_t)*b++ << 16 |
	  (uint32_t)*a++ << 24;
      *d++ = *e++ | (uint32_t)*g++ << 8 | (uint32_t)*b++ << 16 |
	  (uint32_t)*a++ << 24;
  }
}