Improve the test in bitfields.m4

Using a named bitfield with a width more than 0 means we won't hit
weirdness caused by the bitfield not really needing to exist.  Changing
int to long long means we won't have trouble with some arch where size
of int is 1 or 2.

libobjc/ChangeLog:

2015-05-04  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	* configure: Regenerate.

config/ChangeLog:

2015-05-04  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	* bitfields.m4: Change int to long long, and use bitfields of
	width 1 instead of 0.

From-SVN: r222794
This commit is contained in:
Trevor Saunders 2015-05-05 03:41:53 +00:00 committed by Trevor Saunders
parent f6341d8d09
commit d6ed95fcb5
4 changed files with 15 additions and 8 deletions

View File

@ -1,3 +1,8 @@
2015-05-04 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
* bitfields.m4: Change int to long long, and use bitfields of
width 1 instead of 0.
2015-05-01 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
* bitfields.m4: New file.

View File

@ -13,10 +13,9 @@ AC_DEFUN([gt_BITFIELD_TYPE_MATTERS],
AC_CACHE_CHECK([if the type of bitfields matters], gt_cv_bitfield_type_matters,
[
AC_TRY_COMPILE(
[struct foo1 { char x; char :0; char y; };
struct foo2 { char x; int :0; char y; };
int foo1test[ sizeof (struct foo1) == 2 ? 1 : -1 ];
int foo2test[ sizeof (struct foo2) == 5 ? 1 : -1]; ],
[struct foo1 { char x; char y:1; char z; };
struct foo2 { char x; long long int y:1; char z; };
int foo1test[ sizeof (struct foo1) < sizeof (struct foo2) ? 1 : -1 ]; ],
[], gt_cv_bitfield_type_matters=yes, gt_cv_bitfield_type_matters=no)
])
if test $gt_cv_bitfield_type_matters = yes; then

View File

@ -1,3 +1,7 @@
2015-05-04 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
* configure: Regenerate.
2015-05-01 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
* acinclude.m4: Include bitfields.m4.

7
libobjc/configure vendored
View File

@ -11539,10 +11539,9 @@ else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
struct foo1 { char x; char :0; char y; };
struct foo2 { char x; int :0; char y; };
int foo1test[ sizeof (struct foo1) == 2 ? 1 : -1 ];
int foo2test[ sizeof (struct foo2) == 5 ? 1 : -1];
struct foo1 { char x; char y:1; char z; };
struct foo2 { char x; long long int y:1; char z; };
int foo1test[ sizeof (struct foo1) < sizeof (struct foo2) ? 1 : -1 ];
int
main ()
{