1 /* PR middle-end/29695 */
2 
3 extern void abort (void);
4 
5 int
f1(void)6 f1 (void)
7 {
8   int a = 128;
9   return (a & 0x80) ? 0x80 : 0;
10 }
11 
12 int
f2(void)13 f2 (void)
14 {
15   unsigned char a = 128;
16   return (a & 0x80) ? 0x80 : 0;
17 }
18 
19 int
f3(void)20 f3 (void)
21 {
22   unsigned char a = 128;
23   return (a & 0x80) ? 0x380 : 0;
24 }
25 
26 int
f4(void)27 f4 (void)
28 {
29   unsigned char a = 128;
30   return (a & 0x80) ? -128 : 0;
31 }
32 
33 long long
f5(void)34 f5 (void)
35 {
36   long long a = 0x80000000LL;
37   return (a & 0x80000000) ? 0x80000000LL : 0LL;
38 }
39 
40 long long
f6(void)41 f6 (void)
42 {
43   unsigned int a = 0x80000000;
44   return (a & 0x80000000) ? 0x80000000LL : 0LL;
45 }
46 
47 long long
f7(void)48 f7 (void)
49 {
50   unsigned int a = 0x80000000;
51   return (a & 0x80000000) ? 0x380000000LL : 0LL;
52 }
53 
54 long long
f8(void)55 f8 (void)
56 {
57   unsigned int a = 0x80000000;
58   return (a & 0x80000000) ? -2147483648LL : 0LL;
59 }
60 
61 int
main(void)62 main (void)
63 {
64   if ((char) 128 != -128 || (int) 0x80000000 != -2147483648)
65     return 0;
66   if (f1 () != 128)
67     abort ();
68   if (f2 () != 128)
69     abort ();
70   if (f3 () != 896)
71     abort ();
72   if (f4 () != -128)
73     abort ();
74   if (f5 () != 0x80000000LL)
75     abort ();
76   if (f6 () != 0x80000000LL)
77     abort ();
78   if (f7 () != 0x380000000LL)
79     abort ();
80   if (f8 () != -2147483648LL)
81     abort ();
82   return 0;
83 }
84