| // { dg-do run } |
| //980323 bkoz |
| //test for bools with inclusive ors |
| |
| #include <assert.h> |
| #include <limits.h> |
| |
| void bar ( bool x ) {} |
| void bars ( short x ) {} |
| |
| /* 980326 bkoz this is not initialized and so can have indeterminate value. */ |
| #if 0 |
| int orb(){ |
| bool y; |
| bar ( y ); |
| int blob = ( 27 | int (y) ); |
| return blob; //expect 27 or 0 |
| } |
| #endif |
| |
| int orbtrue(){ |
| bool y = true; |
| bar ( y ); |
| int blob = ( 27 | int (y) ); |
| return blob; //expect 27 |
| } |
| |
| int orbfalse(){ |
| bool y = false; |
| bar ( y ); |
| int blob = ( 27 | int (y) ); |
| return blob; //expect 27 |
| } |
| |
| int orbfalse2(){ |
| bool y = 0; |
| bar ( y ); |
| int blob = ( 27 | int (y) ); |
| return blob; //expect 27 |
| } |
| |
| int ors(){ |
| short y = 1; |
| bars ( y ); |
| int blob = ( 27 | int (y) ); |
| return blob; //expect 27 |
| } |
| |
| |
| #if INT_MAX > 32767 |
| int orus(){ |
| unsigned short y = 1; |
| bars ( y ); |
| int blob = ( 65539 | int (y) ); |
| return blob; //expect 65539, will be 3 if done in us type |
| } |
| #endif |
| |
| int main() { |
| int tmp; |
| #if 0 |
| tmp = orb(); |
| assert (tmp == 27 || tmp == 0); |
| #endif |
| tmp = orbtrue(); |
| assert (tmp ==27); |
| tmp = orbfalse(); |
| assert (tmp ==27); |
| tmp = orbfalse2(); |
| assert (tmp ==27); |
| tmp = ors(); |
| assert (tmp ==27); |
| #if INT_MAX > 32767 |
| tmp = orus(); |
| assert (tmp == 65539); |
| #endif |
| |
| return 0; |
| } |
| |