diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.benjamin/bool01.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.benjamin/bool01.C | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.benjamin/bool01.C b/gcc/testsuite/g++.old-deja/g++.benjamin/bool01.C new file mode 100644 index 000000000..b9890412d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.benjamin/bool01.C @@ -0,0 +1,80 @@ +// { 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; +} + |