1 /*
2 20010224-1.c from the execute part of the gcc torture tests.
3 */
4
5 #include <testfwk.h>
6
7 #ifdef __SDCC
8 #pragma std_c99
9 #pragma disable_warning 85
10 #endif
11
12 #include <stdint.h>
13
14 #if !defined(__SDCC_pdk14) // Lack of memory
15 int16_t logadd (int16_t *a, int16_t *b);
16 void ba_compute_psd (int16_t start);
17
18 int16_t masktab[6] = { 1, 2, 3, 4, 5};
19 int16_t psd[6] = { 50, 40, 30, 20, 10};
20 int16_t bndpsd[6] = { 1, 2, 3, 4, 5};
21
ba_compute_psd(int16_t start)22 void ba_compute_psd (int16_t start)
23 {
24 int i,j,k;
25 int16_t lastbin = 4;
26
27 j = start;
28 k = masktab[start];
29
30 bndpsd[k] = psd[j];
31 j++;
32
33 for (i = j; i < lastbin; i++) {
34 bndpsd[k] = logadd(&bndpsd[k], &psd[j]);
35 j++;
36 }
37 }
38 #endif
39
logadd(int16_t * a,int16_t * b)40 int16_t logadd (int16_t *a, int16_t *b)
41 {
42 return *a + *b;
43 }
44
45 void
testTortureExecute(void)46 testTortureExecute (void)
47 {
48 #if !defined(__SDCC_pdk14) // Lack of memory
49 int i;
50
51 ba_compute_psd (0);
52
53 if (bndpsd[1] != 140) ASSERT (0);
54 return;
55 #endif
56 }
57
58