s390x: Fix memcheck false positives with certain comparisons
Consider this structure definition:
struct s {
unsigned b : 1;
unsigned c : 1;
} x;
Then certain compiler optimizations for a big-endian system may transform
the test
if (x.b || x.c)
...
into a comparison `> 0x3f' of the structure's first byte. Indeed, the
result of this comparison only depends on the two highest bits of the
byte. Thus, even if the lower bits are undefined, memcheck shouldn't
complain, but it does.
For certain cases this can be fixed. Do this by detecting comparisons
like this in the condition code helper for S390_CC_OP_UNSIGNED_COMPARE and
transforming them to a test for the selected bits instead. Add a small
test to verify the fix.