1 /*
2 921029-1.c from the execute part of the gcc torture suite.
3 */
4
5 #include <testfwk.h>
6
7 #ifdef __SDCC
8 #pragma std_c99
9 #endif
10
11 // TODO: Enable when sdcc supports long long in these ports!
12 #if !defined(__SDCC_pic14) && !defined(__SDCC_pic16)
13 typedef unsigned long long ULL;
14 ULL back;
15 ULL hpart, lpart;
16 ULL
build(long h,long l)17 build(long h, long l)
18 {
19 hpart = h;
20 hpart <<= 32;
21 lpart = l;
22 lpart &= 0xFFFFFFFFLL;
23 back = hpart | lpart;
24 return back;
25 }
26 #endif
27
28 void
testTortureExecute(void)29 testTortureExecute (void)
30 {
31 #if !defined(__SDCC_pdk14) // Lack of memory
32 if (build(0, 1) != 0x0000000000000001LL)
33 ASSERT(0);
34 if (build(0, 0) != 0x0000000000000000LL)
35 ASSERT(0);
36 if (build(0, 0xFFFFFFFF) != 0x00000000FFFFFFFFLL)
37 ASSERT(0);
38 if (build(0, 0xFFFFFFFE) != 0x00000000FFFFFFFELL)
39 ASSERT(0);
40 if (build(1, 1) != 0x0000000100000001LL)
41 ASSERT(0);
42 if (build(1, 0) != 0x0000000100000000LL)
43 ASSERT(0);
44 if (build(1, 0xFFFFFFFF) != 0x00000001FFFFFFFFLL)
45 ASSERT(0);
46 if (build(1, 0xFFFFFFFE) != 0x00000001FFFFFFFELL)
47 ASSERT(0);
48 if (build(0xFFFFFFFF, 1) != 0xFFFFFFFF00000001LL)
49 ASSERT(0);
50 if (build(0xFFFFFFFF, 0) != 0xFFFFFFFF00000000LL)
51 ASSERT(0);
52 if (build(0xFFFFFFFF, 0xFFFFFFFF) != 0xFFFFFFFFFFFFFFFFLL)
53 ASSERT(0);
54 if (build(0xFFFFFFFF, 0xFFFFFFFE) != 0xFFFFFFFFFFFFFFFELL)
55 ASSERT(0);
56 return;
57 #endif
58 }
59
60