81 lines
1.3 KiB
C
81 lines
1.3 KiB
C
// { 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;
|
|
}
|
|
|