2 !!DESCRIPTION!! C-Manual Chapter 9: Statements
3 !!ORIGIN!! LCC 4.1 Testsuite
4 !!LICENCE!! own, freely distributeable for non-profit. read CPYRIGHT.LCC
8 int cbits; /* No. of bits per char */
10 int sbits; /* short */
12 int ubits; /* unsigned */
13 int fbits; /* float */
14 int dbits; /* double */
16 float fprec; /* Smallest number that can be */
17 float dprec; /* significantly added to 1. */
19 int flgs; /* Print return codes, by section */
20 int flgm; /* Announce machine dependencies */
21 int flgd; /* give explicit diagnostics */
22 int flgl; /* Report local return codes. */
23 int rrc; /* recent return code */
24 int crc; /* Cumulative return code */
25 char rfs[8]; /* Return from section */
29 int ubits; /* unsigned */
30 int fbits; /* float */
31 int dbits; /* double */
33 float fprec; /* Smallest number that can be */
34 float dprec; /* significantly added to 1. */
36 int flgs; /* Print return codes, by section */
37 int flgm; /* Announce machine dependencies */
38 int flgd; /* give explicit diagnostics */
39 int flgl; /* Report local return codes. */
40 int rrc; /* recent return code */
41 int crc; /* Cumulative return code */
42 char rfs[8]; /* Return from section */
44 #ifndef NO_OLD_FUNC_DECL
45 s714(pd0) /* 7.14 Assignment operators */
49 int s714(struct defs *pd0){
51 static char f[] = "Local error %d.\n";
52 static char s714er[] = "s714,er%d\n";
53 static char qs714[8] = "s714 ";
54 register int prlc, lrc;
74 while (*pt++ = *ps++);
76 /* This section tests the assignment operators.
78 It is an exhaustive test of all assignment statements
83 where vl and vr are variables from the set
84 {char,short,int,long,unsigned,float,double} and op is
85 one of the assignment operators. There are 395 such
88 The initial values for the variables have been chosen
89 so that both the initial values and the results will
90 "fit" in just about any implementation, and that the re-
91 sults will be such that they test for the proper form-
92 ation of composite operators, rather than checking for
93 the valid operation of those operators' components.
94 For example, in checking >>=, we want to verify that
95 a right shift and a move take place, rather than
96 whether or not there may be some peculiarities about
97 the right shift. Such tests have been made previously,
98 and to repeat them here would be to throw out a red
101 The table below lists the operators, assignment targets,
102 initial values for left and right operands, and the
103 expected values of the results.
105 = += -= *= /= %= >>= <<= &= ^= |=
106 char 2 7 3 10 2 1 1 20 8 6 14
107 short 2 7 3 10 2 1 1 20 8 6 14
108 int 2 7 3 10 2 1 1 20 8 6 14
109 long 2 7 3 10 2 1 1 20 8 6 14
110 unsigned 2 7 3 10 2 1 1 20 8 6 14
111 float 2 7 3 10 2.5 | |
112 double 2 7 3 10 2.5 | |
114 initial (5,2) | (5,2) | (12,10)
116 The following machine-generated program reflects the
117 tests described in the table.
124 if(prlc) printf(f,lrc);
130 if(prlc) printf(f,lrc);
136 if(prlc) printf(f,lrc);
142 if(prlc) printf(f,lrc);
148 if(prlc) printf(f,lrc);
154 if(prlc) printf(f,lrc);
160 if(prlc) printf(f,lrc);
166 if(prlc) printf(f,lrc);
172 if(prlc) printf(f,lrc);
178 if(prlc) printf(f,lrc);
184 if(prlc) printf(f,lrc);
190 if(prlc) printf(f,lrc);
196 if(prlc) printf(f,lrc);
202 if(prlc) printf(f,lrc);
208 if(prlc) printf(f,lrc);
214 if(prlc) printf(f,lrc);
220 if(prlc) printf(f,lrc);
226 if(prlc) printf(f,lrc);
232 if(prlc) printf(f,lrc);
238 if(prlc) printf(f,lrc);
244 if(prlc) printf(f,lrc);
250 if(prlc) printf(f,lrc);
256 if(prlc) printf(f,lrc);
262 if(prlc) printf(f,lrc);
268 if(prlc) printf(f,lrc);
274 if(prlc) printf(f,lrc);
280 if(prlc) printf(f,lrc);
286 if(prlc) printf(f,lrc);
292 if(prlc) printf(f,lrc);
298 if(prlc) printf(f,lrc);
304 if(prlc) printf(f,lrc);
310 if(prlc) printf(f,lrc);
316 if(prlc) printf(f,lrc);
322 if(prlc) printf(f,lrc);
328 if(prlc) printf(f,lrc);
334 if(prlc) printf(f,lrc);
340 if(prlc) printf(f,lrc);
346 if(prlc) printf(f,lrc);
352 if(prlc) printf(f,lrc);
358 if(prlc) printf(f,lrc);
364 if(prlc) printf(f,lrc);
370 if(prlc) printf(f,lrc);
376 if(prlc) printf(f,lrc);
382 if(prlc) printf(f,lrc);
388 if(prlc) printf(f,lrc);
394 if(prlc) printf(f,lrc);
400 if(prlc) printf(f,lrc);
406 if(prlc) printf(f,lrc);
412 if(prlc) printf(f,lrc);
418 if(prlc) printf(f,lrc);
424 if(prlc) printf(f,lrc);
430 if(prlc) printf(f,lrc);
436 if(prlc) printf(f,lrc);
442 if(prlc) printf(f,lrc);
448 if(prlc) printf(f,lrc);
454 if(prlc) printf(f,lrc);
460 if(prlc) printf(f,lrc);
466 if(prlc) printf(f,lrc);
472 if(prlc) printf(f,lrc);
478 if(prlc) printf(f,lrc);
484 if(prlc) printf(f,lrc);
490 if(prlc) printf(f,lrc);
496 if(prlc) printf(f,lrc);
502 if(prlc) printf(f,lrc);
508 if(prlc) printf(f,lrc);
514 if(prlc) printf(f,lrc);
520 if(prlc) printf(f,lrc);
526 if(prlc) printf(f,lrc);
532 if(prlc) printf(f,lrc);
538 if(prlc) printf(f,lrc);
544 if(prlc) printf(f,lrc);
550 if(prlc) printf(f,lrc);
556 if(prlc) printf(f,lrc);
562 if(prlc) printf(f,lrc);
568 if(prlc) printf(f,lrc);
574 if(prlc) printf(f,lrc);
580 if(prlc) printf(f,lrc);
586 if(prlc) printf(f,lrc);
592 if(prlc) printf(f,lrc);
598 if(prlc) printf(f,lrc);
604 if(prlc) printf(f,lrc);
610 if(prlc) printf(f,lrc);
616 if(prlc) printf(f,lrc);
622 if(prlc) printf(f,lrc);
628 if(prlc) printf(f,lrc);
634 if(prlc) printf(f,lrc);
640 if(prlc) printf(f,lrc);
646 if(prlc) printf(f,lrc);
652 if(prlc) printf(f,lrc);
658 if(prlc) printf(f,lrc);
664 if(prlc) printf(f,lrc);
670 if(prlc) printf(f,lrc);
676 if(prlc) printf(f,lrc);
682 if(prlc) printf(f,lrc);
688 if(prlc) printf(f,lrc);
694 if(prlc) printf(f,lrc);
700 if(prlc) printf(f,lrc);
706 if(prlc) printf(f,lrc);
712 if(prlc) printf(f,lrc);
718 if(prlc) printf(f,lrc);
724 if(prlc) printf(f,lrc);
730 if(prlc) printf(f,lrc);
736 if(prlc) printf(f,lrc);
742 if(prlc) printf(f,lrc);
748 if(prlc) printf(f,lrc);
754 if(prlc) printf(f,lrc);
760 if(prlc) printf(f,lrc);
766 if(prlc) printf(f,lrc);
772 if(prlc) printf(f,lrc);
778 if(prlc) printf(f,lrc);
784 if(prlc) printf(f,lrc);
790 if(prlc) printf(f,lrc);
796 if(prlc) printf(f,lrc);
802 if(prlc) printf(f,lrc);
808 if(prlc) printf(f,lrc);
814 if(prlc) printf(f,lrc);
820 if(prlc) printf(f,lrc);
826 if(prlc) printf(f,lrc);
832 if(prlc) printf(f,lrc);
838 if(prlc) printf(f,lrc);
844 if(prlc) printf(f,lrc);
850 if(prlc) printf(f,lrc);
856 if(prlc) printf(f,lrc);
862 if(prlc) printf(f,lrc);
868 if(prlc) printf(f,lrc);
874 if(prlc) printf(f,lrc);
880 if(prlc) printf(f,lrc);
886 if(prlc) printf(f,lrc);
892 if(prlc) printf(f,lrc);
898 if(prlc) printf(f,lrc);
904 if(prlc) printf(f,lrc);
910 if(prlc) printf(f,lrc);
916 if(prlc) printf(f,lrc);
922 if(prlc) printf(f,lrc);
928 if(prlc) printf(f,lrc);
934 if(prlc) printf(f,lrc);
940 if(prlc) printf(f,lrc);
946 if(prlc) printf(f,lrc);
952 if(prlc) printf(f,lrc);
958 if(prlc) printf(f,lrc);
962 if(pd0->flgd != 0) printf(s714er,1);
967 /*********************************************************************************************
968 the main loop that launches the sections
969 *********************************************************************************************/
971 #ifndef NO_TYPELESS_STRUCT_PTR
972 int section(int j,struct* pd0){
974 int section(int j,void* pd0){
977 case 0: return s714(pd0);
981 #define cq_sections 1
984 C REFERENCE MANUAL (main)
987 #ifndef NO_OLD_FUNC_DECL
993 int main(int n,char **args) {
997 static struct defs d0, *pd0;
999 d0.flgs = 1; /* These flags dictate */
1000 d0.flgm = 1; /* the verbosity of */
1001 d0.flgd = 1; /* the program. */
1006 for (j=0; j<cq_sections; j++) {
1007 d0.rrc=section(j,pd0);
1008 d0.crc=d0.crc+d0.rrc;
1009 if(d0.flgs != 0) printf("Section %s returned %d.\n",d0.rfs,d0.rrc);
1012 if(d0.crc == 0) printf("\nNo errors detected.\n");
1013 else printf("\nFailed.\n");