diff options
author | Trevor Saunders <tbsaunde@gcc.gnu.org> | 2015-05-02 04:11:07 +0000 |
---|---|---|
committer | Trevor Saunders <tbsaunde@gcc.gnu.org> | 2015-05-02 04:11:07 +0000 |
commit | 539280a8e89d4e63c6ccb9573b755bd17793e33a (patch) | |
tree | fee646565688a42fe976a306924b04532245ff8c /libobjc | |
parent | 90eb63a3a045dd9ac0774860e03163da82cb0a1c (diff) | |
download | gcc-539280a8e89d4e63c6ccb9573b755bd17793e33a.tar.gz |
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
Diffstat (limited to 'libobjc')
-rw-r--r-- | libobjc/acinclude.m4 | 1 | ||||
-rw-r--r-- | libobjc/config.h.in | 3 | ||||
-rwxr-xr-x | libobjc/configure | 38 | ||||
-rw-r--r-- | libobjc/configure.ac | 2 | ||||
-rw-r--r-- | libobjc/encoding.c | 3 |
5 files changed, 46 insertions, 1 deletions
diff --git a/libobjc/acinclude.m4 b/libobjc/acinclude.m4 index bf78dbec8e0..4193018d584 100644 --- a/libobjc/acinclude.m4 +++ b/libobjc/acinclude.m4 @@ -12,6 +12,7 @@ m4_include(../config/acx.m4) m4_include(../config/no-executables.m4) m4_include(../config/enable.m4) m4_include(../config/tls.m4) +m4_include(../config/bitfields.m4) m4_include(../libtool.m4) dnl The lines below arrange for aclocal not to bring an installed diff --git a/libobjc/config.h.in b/libobjc/config.h.in index c055e7c1909..20d1fcaf329 100644 --- a/libobjc/config.h.in +++ b/libobjc/config.h.in @@ -1,5 +1,8 @@ /* 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. */ #undef HAVE_CC_TLS diff --git a/libobjc/configure b/libobjc/configure index 642eb9cc5f2..0547f913a6b 100755 --- a/libobjc/configure +++ b/libobjc/configure @@ -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 "$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 # ------ diff --git a/libobjc/configure.ac b/libobjc/configure.ac index c794a80b518..2d88519f644 100644 --- a/libobjc/configure.ac +++ b/libobjc/configure.ac @@ -266,6 +266,8 @@ fi AC_LANG_POP(C) AC_MSG_RESULT($ac_exception_model_name) +gt_BITFIELD_TYPE_MATTERS + # ------ # Output # ------ diff --git a/libobjc/encoding.c b/libobjc/encoding.c index 20ace465916..abb61454097 100644 --- a/libobjc/encoding.c +++ b/libobjc/encoding.c @@ -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 program if they fail. Is that really needed ? */ +#include "config.h" #include "objc-private/common.h" #include "objc-private/error.h" #include "tconfig.h" @@ -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. Otherwise, the alignment of the field within the record is meaningless. */ -#if !PCC_BITFIELD_TYPE_MATTERS +#ifndef HAVE_BITFIELD_TYPE_MATTERS layout->record_align = MAX (layout->record_align, desired_align); #else /* PCC_BITFIELD_TYPE_MATTERS */ if (*type == _C_BFLD) |