# HG changeset patch # Parent e3757f3e18480a406b7af53435ed99fd6c4774a4 Issue #27643: Disable signed short bitfield test with IBM XLC compiler diff -r e3757f3e1848 Lib/ctypes/test/test_bitfields.py --- a/Lib/ctypes/test/test_bitfields.py Fri Jul 29 05:52:32 2016 +0000 +++ b/Lib/ctypes/test/test_bitfields.py Thu Aug 04 08:54:46 2016 +0000 @@ -41,6 +41,9 @@ self.assertEqual((name, i, getattr(b, name)), (name, i, func(byref(b), name))) def test_shorts(self): + b = BITS() + if func(byref(b), "M") == 999: + self.skipTest("Compiler does not support signed short bitfields") for i in range(256): for name in "MNOPQRS": b = BITS() diff -r e3757f3e1848 Modules/_ctypes/_ctypes_test.c --- a/Modules/_ctypes/_ctypes_test.c Fri Jul 29 05:52:32 2016 +0000 +++ b/Modules/_ctypes/_ctypes_test.c Thu Aug 04 08:54:46 2016 +0000 @@ -378,8 +378,13 @@ EXPORT(unsigned PY_LONG_LONG) last_tf_arg_u; struct BITS { - int A: 1, B:2, C:3, D:4, E: 5, F: 6, G: 7, H: 8, I: 9; + signed int A: 1, B:2, C:3, D:4, E: 5, F: 6, G: 7, H: 8, I: 9; +/* The test case needs "signed short" bitfields, but the IBM XLC compiler +does not support this */ +#ifndef /* Something to identify XLC */ +# define SIGNED_SHORT_BITFIELDS short M: 1, N: 2, O: 3, P: 4, Q: 5, R: 6, S: 7; +#endif }; DL_EXPORT(void) set_bitfields(struct BITS *bits, char name, int value) @@ -394,7 +399,7 @@ case 'G': bits->G = value; break; case 'H': bits->H = value; break; case 'I': bits->I = value; break; - +#ifdef SIGNED_SHORT_BITFIELDS case 'M': bits->M = value; break; case 'N': bits->N = value; break; case 'O': bits->O = value; break; @@ -402,6 +407,7 @@ case 'Q': bits->Q = value; break; case 'R': bits->R = value; break; case 'S': bits->S = value; break; +#endif } } @@ -417,7 +423,7 @@ case 'G': return bits->G; case 'H': return bits->H; case 'I': return bits->I; - +#ifdef SIGNED_SHORT_BITFIELDS case 'M': return bits->M; case 'N': return bits->N; case 'O': return bits->O; @@ -425,8 +431,9 @@ case 'Q': return bits->Q; case 'R': return bits->R; case 'S': return bits->S; +#endif } - return 0; + return 999; } static PyMethodDef module_methods[] = {