1 //980323 bkoz
2 //test for bools with inclusive ors
3 
4 #include <assert.h>
5 #include <limits.h>
6 
bar(bool x)7 void bar ( bool  x ) {};
bars(short x)8 void bars ( short  x ) {};
9 
10 /* 980326 bkoz this is not initialized and so can have indeterminate value. */
11 #if 0
12 int orb(){
13   bool y;
14   bar ( y );
15   int blob = ( 27 | int (y) );
16   return blob; //expect 27 or 0
17 }
18 #endif
19 
orbtrue()20 int orbtrue(){
21   bool y = true;
22   bar ( y );
23   int blob = ( 27 | int (y) );
24   return blob; //expect 27
25 }
26 
orbfalse()27 int orbfalse(){
28   bool y = false;
29   bar ( y );
30   int blob = ( 27 | int (y) );
31   return blob; //expect 27
32 }
33 
orbfalse2()34 int orbfalse2(){
35   bool y = 0;
36   bar ( y );
37   int blob = ( 27 | int (y) );
38   return blob;  //expect 27
39 }
40 
ors()41 int ors(){
42   short y = 1;
43   bars ( y );
44   int blob = ( 27 | int (y) );
45   return blob;  //expect 27
46 }
47 
48 
49 #if INT_MAX > 32767
orus()50 int orus(){
51   unsigned short y = 1;
52   bars ( y );
53   int blob = ( 65539 | int (y) );
54   return blob;  //expect 65539, will be 3 if done in us type
55 }
56 #endif
57 
main()58 int main() {
59   int tmp;
60 #if 0
61   tmp = orb();
62   assert (tmp == 27 || tmp == 0);
63 #endif
64   tmp = orbtrue();
65   assert (tmp ==27);
66   tmp = orbfalse();
67   assert (tmp ==27);
68   tmp = orbfalse2();
69   assert (tmp ==27);
70   tmp = ors();
71   assert (tmp ==27);
72 #if INT_MAX > 32767
73   tmp = orus();
74   assert (tmp == 65539);
75 #endif
76 
77   return 0;
78 }
79 
80