Commit 539280a8 by Trevor Saunders

fixup libobjc usage of PCC_BITFIELD_TYPE_MATTERS

libobjc/ChangeLog:

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

	* acinclude.m4: Include bitfields.m4.
	* config.h.in: Regenerate.
	* configure: Likewise.
	* configure.ac: Invoke gt_BITFIELD_TYPE_MATTERS.
	* encoding.c: Check HAVE_BITFIELD_TYPE_MATTERS.

config/ChangeLog:

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

	* bitfields.m4: New file.

From-SVN: r222715
parent 90eb63a3
dnl Copyright (C) 2015 Free Software Foundation, Inc.
dnl This file is free software, distributed under the terms of the GNU
dnl General Public License. As a special exception to the GNU General
dnl Public License, this file may be distributed as part of a program
dnl that contains a configuration script generated by Autoconf, under
dnl the same distribution terms as the rest of that program.
# Define HAVE_BITFIELD_TYPE_MATTERS if the type of bitfields effects their
# alignment.
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]; ],
[], gt_cv_bitfield_type_matters=yes, gt_cv_bitfield_type_matters=no)
])
if test $gt_cv_bitfield_type_matters = yes; then
AC_DEFINE(HAVE_BITFIELD_TYPE_MATTERS, 1,
[Define if the type of bitfields effects alignment.])
fi
])
...@@ -12,6 +12,7 @@ m4_include(../config/acx.m4) ...@@ -12,6 +12,7 @@ m4_include(../config/acx.m4)
m4_include(../config/no-executables.m4) m4_include(../config/no-executables.m4)
m4_include(../config/enable.m4) m4_include(../config/enable.m4)
m4_include(../config/tls.m4) m4_include(../config/tls.m4)
m4_include(../config/bitfields.m4)
m4_include(../libtool.m4) m4_include(../libtool.m4)
dnl The lines below arrange for aclocal not to bring an installed dnl The lines below arrange for aclocal not to bring an installed
......
/* config.h.in. Generated from configure.ac by autoheader. */ /* config.h.in. Generated from configure.ac by autoheader. */
/* Define if the type of bitfields effects alignment. */
#undef HAVE_BITFIELD_TYPE_MATTERS
/* Define to 1 if the target assembler supports thread-local storage. */ /* Define to 1 if the target assembler supports thread-local storage. */
#undef HAVE_CC_TLS #undef HAVE_CC_TLS
......
...@@ -11530,6 +11530,44 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu ...@@ -11530,6 +11530,44 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_exception_model_name" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_exception_model_name" >&5
$as_echo "$ac_exception_model_name" >&6; } $as_echo "$ac_exception_model_name" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the type of bitfields matters" >&5
$as_echo_n "checking if the type of bitfields matters... " >&6; }
if test "${gt_cv_bitfield_type_matters+set}" = set; then :
$as_echo_n "(cached) " >&6
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];
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
gt_cv_bitfield_type_matters=yes
else
gt_cv_bitfield_type_matters=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_bitfield_type_matters" >&5
$as_echo "$gt_cv_bitfield_type_matters" >&6; }
if test $gt_cv_bitfield_type_matters = yes; then
$as_echo "#define HAVE_BITFIELD_TYPE_MATTERS 1" >>confdefs.h
fi
# ------ # ------
# Output # Output
# ------ # ------
......
...@@ -266,6 +266,8 @@ fi ...@@ -266,6 +266,8 @@ fi
AC_LANG_POP(C) AC_LANG_POP(C)
AC_MSG_RESULT($ac_exception_model_name) AC_MSG_RESULT($ac_exception_model_name)
gt_BITFIELD_TYPE_MATTERS
# ------ # ------
# Output # Output
# ------ # ------
......
...@@ -29,6 +29,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ...@@ -29,6 +29,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
/* FIXME: This file contains functions that will abort the entire /* FIXME: This file contains functions that will abort the entire
program if they fail. Is that really needed ? */ program if they fail. Is that really needed ? */
#include "config.h"
#include "objc-private/common.h" #include "objc-private/common.h"
#include "objc-private/error.h" #include "objc-private/error.h"
#include "tconfig.h" #include "tconfig.h"
...@@ -1167,7 +1168,7 @@ objc_layout_structure_next_member (struct objc_struct_layout *layout) ...@@ -1167,7 +1168,7 @@ objc_layout_structure_next_member (struct objc_struct_layout *layout)
/* Record must have at least as much alignment as any field. /* Record must have at least as much alignment as any field.
Otherwise, the alignment of the field within the record Otherwise, the alignment of the field within the record
is meaningless. */ is meaningless. */
#if !PCC_BITFIELD_TYPE_MATTERS #ifndef HAVE_BITFIELD_TYPE_MATTERS
layout->record_align = MAX (layout->record_align, desired_align); layout->record_align = MAX (layout->record_align, desired_align);
#else /* PCC_BITFIELD_TYPE_MATTERS */ #else /* PCC_BITFIELD_TYPE_MATTERS */
if (*type == _C_BFLD) if (*type == _C_BFLD)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment