middle-end: copy STMT_VINFO_STRIDED_P when DR is replaced [PR116956]
[official-gcc.git] / gcc / testsuite / gcc.dg / torture / pr91656-3.c
blobf84e51af4a453812567e86e570744d0e87e6b397
1 /* { dg-do run { target int128 } } */
2 /* { dg-additional-options "-fgcse-after-reload" } */
4 typedef unsigned char u8;
5 typedef unsigned short u16;
6 typedef unsigned int u32;
7 typedef unsigned long long u64;
8 int a, b, c;
9 int
10 d (u16 e, u64 f)
12 b |= e;
13 #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
14 __builtin_memset (&f, e, 2);
15 #elif (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ \
16 || __BYTE_ORDER__ == __ORDER_PDP_ENDIAN__)
17 __builtin_memset ((char *) &f + sizeof (f) - 2, e, 2);
18 #else
19 #error "endian unknown?"
20 #endif
21 a = (u16) - e >= 2 ? : __builtin_popcountll (f);
22 return a + c;
25 int
26 main (void)
28 __int128 x = d (~0, 0);
29 if (x != 16)
30 __builtin_abort ();
31 return 0;