131
|
1 /* PR target/85582 */
|
|
2
|
|
3 #ifdef __SIZEOF_INT128__
|
|
4 typedef __int128 S;
|
|
5 typedef unsigned __int128 U;
|
|
6 #else
|
|
7 typedef long long S;
|
|
8 typedef unsigned long long U;
|
|
9 #endif
|
|
10
|
|
11 __attribute__((noipa)) S
|
|
12 f1 (S x, int y)
|
|
13 {
|
|
14 x = x << (y & 5);
|
|
15 x += y;
|
|
16 return x;
|
|
17 }
|
|
18
|
|
19 __attribute__((noipa)) S
|
|
20 f2 (S x, int y)
|
|
21 {
|
|
22 x = x >> (y & 5);
|
|
23 x += y;
|
|
24 return x;
|
|
25 }
|
|
26
|
|
27 __attribute__((noipa)) U
|
|
28 f3 (U x, int y)
|
|
29 {
|
|
30 x = x >> (y & 5);
|
|
31 x += y;
|
|
32 return x;
|
|
33 }
|
|
34
|
|
35 int
|
|
36 main ()
|
|
37 {
|
|
38 S a = (S) 1 << (sizeof (S) * __CHAR_BIT__ - 7);
|
|
39 S b = f1 (a, 12);
|
|
40 if (b != ((S) 1 << (sizeof (S) * __CHAR_BIT__ - 3)) + 12)
|
|
41 __builtin_abort ();
|
|
42 S c = (U) 1 << (sizeof (S) * __CHAR_BIT__ - 1);
|
|
43 S d = f2 (c, 12);
|
|
44 if ((U) d != ((U) 0x1f << (sizeof (S) * __CHAR_BIT__ - 5)) + 12)
|
|
45 __builtin_abort ();
|
|
46 U e = (U) 1 << (sizeof (U) * __CHAR_BIT__ - 1);
|
|
47 U f = f3 (c, 12);
|
|
48 if (f != ((U) 1 << (sizeof (U) * __CHAR_BIT__ - 5)) + 12)
|
|
49 __builtin_abort ();
|
|
50 return 0;
|
|
51 }
|