1 int errflag;
2
3 long long
f(long long x,long long y)4 f (long long x, long long y)
5 {
6 long long r;
7
8 errflag = 0;
9 r = x + y;
10 if (x >= 0)
11 {
12 if ((y < 0) || (r >= 0))
13 return r;
14 }
15 else
16 {
17 if ((y > 0) || (r < 0))
18 return r;
19 }
20 errflag = 1;
21 return 0;
22 }
23
main()24 main ()
25 {
26 f (0, 0);
27 if (errflag)
28 abort ();
29
30 f (1, -1);
31 if (errflag)
32 abort ();
33
34 f (-1, 1);
35 if (errflag)
36 abort ();
37
38 f (0x8000000000000000LL, 0x8000000000000000LL);
39 if (!errflag)
40 abort ();
41
42 f (0x8000000000000000LL, -1LL);
43 if (!errflag)
44 abort ();
45
46 f (0x7fffffffffffffffLL, 0x7fffffffffffffffLL);
47 if (!errflag)
48 abort ();
49
50 f (0x7fffffffffffffffLL, 1LL);
51 if (!errflag)
52 abort ();
53
54 f (0x7fffffffffffffffLL, 0x8000000000000000LL);
55 if (errflag)
56 abort ();
57
58 exit (0);
59 }
60