1 //980323 bkoz 2 //test for bools with inclusive ors 3 4 #include <assert.h> 5 #include <limits.h> 6 bar(bool x)7void bar ( bool x ) {}; bars(short x)8void 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()20int orbtrue(){ 21 bool y = true; 22 bar ( y ); 23 int blob = ( 27 | int (y) ); 24 return blob; //expect 27 25 } 26 orbfalse()27int orbfalse(){ 28 bool y = false; 29 bar ( y ); 30 int blob = ( 27 | int (y) ); 31 return blob; //expect 27 32 } 33 orbfalse2()34int orbfalse2(){ 35 bool y = 0; 36 bar ( y ); 37 int blob = ( 27 | int (y) ); 38 return blob; //expect 27 39 } 40 ors()41int 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()50int 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()58int 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