* [3.4-BIB] Turn on MS bitfields for Interix
@ 2002-11-04 22:00 Douglas B Rupp
2002-11-05 21:26 ` Douglas B Rupp
2002-11-06 10:34 ` Richard Henderson
0 siblings, 2 replies; 3+ messages in thread
From: Douglas B Rupp @ 2002-11-04 22:00 UTC (permalink / raw)
To: gcc-patches
[-- Attachment #1: Type: text/plain, Size: 201 bytes --]
This patch adds the MS bitfield option to i386 as previously suggested
(since it is potentially applicable to all i386 subtargets),
turns them on by default for Interix, and adds a couple of tests.
[-- Attachment #2: gcc.diff.txt --]
[-- Type: text/plain, Size: 17431 bytes --]
* config/i386/i386-interix.h (TARGET_SUBTARGET_DEFAULT): Or
MASK_MS_BITFIELD_LAYOUT
(SUBTARGET_OVERRIDE_OPTIONS): Warn about and turn off
MS bitfields for Objective-C.
(PCC_BIT_FIELD_TYPE_TEST, GROUP_BITFIELDS_BY_ALIGN): Remove
defines.
* config/i386/i386.c (ix86_ms_bitfield_layout): New function.
(TARGET_MS_BITFIELD_LAYOUT_P): Define to above function.
(TARGET_USE_MS_BITFIELD_LAYOUT): Define.
* config/i386/i386.h (MASK_MS_BITFIELD_LAYOUT: New mask.
TARGET_USE_MS_BITFIELD_LAYOUT): New macro.
(TARGET_SWITCHES): Add above mask.
* testsuite/gcc.dg/bf-ms-layout.c: New test case.
* testsuite/gcc.dg/bf-no-ms-layout.c: New test case.
* testsuite/gcc.dg/i386-bitfield1.c (dg-options): Add appropriate
flags for interix.
Index: gcc/config/i386/i386-interix.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/i386/i386-interix.h,v
retrieving revision 1.36.4.1
diff -u -p -r1.36.4.1 i386-interix.h
--- gcc/config/i386/i386-interix.h 5 Sep 2002 17:47:07 -0000 1.36.4.1
+++ gcc/config/i386/i386-interix.h 1 Nov 2002 17:09:28 -0000
@@ -35,11 +35,12 @@ Boston, MA 02111-1307, USA. */
/* By default, target has a 80387, uses IEEE compatible arithmetic,
and returns float values in the 387 and needs stack probes
- We also align doubles to 64-bits for MSVC default compatibility */
+ We also align doubles to 64-bits for MSVC default compatibility
+ We do bitfields MSVC-compatably by default, too. */
#undef TARGET_SUBTARGET_DEFAULT
#define TARGET_SUBTARGET_DEFAULT \
(MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS | MASK_STACK_PROBE | \
- MASK_ALIGN_DOUBLE)
+ MASK_ALIGN_DOUBLE | MASK_MS_BITFIELD_LAYOUT)
#undef TARGET_CPU_DEFAULT
#define TARGET_CPU_DEFAULT 2 /* 486 */
@@ -243,6 +244,28 @@ Boston, MA 02111-1307, USA. */
#define TARGET_NOP_FUN_DLLIMPORT 1
#define drectve_section() /* nothing */
+/* Objective C has its own packing rules...
+ Objc tries to parallel the code in stor-layout.c at runtime
+ (see libobjc/encoding.c). This (compile-time) packing info isn't
+ available at runtime, so it's hopeless to try.
+
+ And if the user tries to set the flag for objc, give an error
+ so he has some clue. */
+
+#undef SUBTARGET_OVERRIDE_OPTIONS
+#define SUBTARGET_OVERRIDE_OPTIONS \
+do { \
+ if (strcmp (lang_hooks.name, "GNU Objective-C") == 0) \
+ { \
+ if ((target_flags & MASK_MS_BITFIELD_LAYOUT) != 0 \
+ && (target_flags_explicit & MASK_MS_BITFIELD_LAYOUT) != 0) \
+ { \
+ error ("ms-bitfields not supported for objc"); \
+ } \
+ target_flags &= ~MASK_MS_BITFIELD_LAYOUT; \
+ } \
+} while (0)
+
#define EH_FRAME_IN_DATA_SECTION
#define READONLY_DATA_SECTION_ASM_OP "\t.section\t.rdata,\"r\""
@@ -273,8 +296,6 @@ while (0)
#define HOST_PTR_AS_INT unsigned long
#define PCC_BITFIELD_TYPE_MATTERS 1
-#define PCC_BITFIELD_TYPE_TEST TYPE_NATIVE(rec)
-#define GROUP_BITFIELDS_BY_ALIGN TYPE_NATIVE(rec)
/* The following two flags are usually "off" for i386, because some non-gnu
tools (for the i386) don't handle them. However, we don't have that
Index: gcc/config/i386/i386.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/i386/i386.c,v
retrieving revision 1.447.2.18
diff -u -p -r1.447.2.18 i386.c
--- gcc/config/i386/i386.c 29 Oct 2002 19:49:58 -0000 1.447.2.18
+++ gcc/config/i386/i386.c 1 Nov 2002 17:09:57 -0000
@@ -814,6 +814,7 @@ static bool ix86_function_ok_for_sibcall
static tree ix86_handle_cdecl_attribute PARAMS ((tree *, tree, tree, int, bool *));
static tree ix86_handle_regparm_attribute PARAMS ((tree *, tree, tree, int, bool *));
static int ix86_value_regno PARAMS ((enum machine_mode));
+static bool ix86_ms_bitfield_layout_p PARAMS ((tree));
#if defined (DO_GLOBAL_CTORS_BODY) && defined (HAS_INIT_SECTION)
static void ix86_svr3_asm_out_constructor PARAMS ((rtx, int));
@@ -920,6 +921,9 @@ static enum x86_64_reg_class merge_class
#define TARGET_HAVE_TLS true
#endif
+#undef TARGET_MS_BITFIELD_LAYOUT_P
+#define TARGET_MS_BITFIELD_LAYOUT_P ix86_ms_bitfield_layout_p
+
#undef TARGET_ASM_OUTPUT_MI_THUNK
#define TARGET_ASM_OUTPUT_MI_THUNK x86_output_mi_thunk
#undef TARGET_ASM_CAN_OUTPUT_MI_THUNK
@@ -14191,6 +14195,17 @@ x86_order_regs_for_local_alloc ()
at all. */
while (pos < FIRST_PSEUDO_REGISTER)
reg_alloc_order [pos++] = 0;
+}
+
+#ifndef TARGET_USE_MS_BITFIELD_LAYOUT
+#define TARGET_USE_MS_BITFIELD_LAYOUT 0
+#endif
+
+static bool
+ix86_ms_bitfield_layout_p (record_type)
+ tree record_type ATTRIBUTE_UNUSED;
+{
+ return TARGET_USE_MS_BITFIELD_LAYOUT;
}
/* Returns an expression indicating where the this parameter is
Index: gcc/config/i386/i386.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/i386/i386.h,v
retrieving revision 1.280.4.14
diff -u -p -r1.280.4.14 i386.h
--- gcc/config/i386/i386.h 29 Oct 2002 19:49:59 -0000 1.280.4.14
+++ gcc/config/i386/i386.h 1 Nov 2002 17:10:08 -0000
@@ -119,8 +119,9 @@ extern int target_flags;
#define MASK_3DNOW_A 0x00020000 /* Support Athlon 3Dnow builtins */
#define MASK_128BIT_LONG_DOUBLE 0x00040000 /* long double size is 128bit */
#define MASK_64BIT 0x00080000 /* Produce 64bit code */
+#define MASK_MS_BITFIELD_LAYOUT 0x00100000 /* Use native (MS) bitfield layout */
-/* Unused: 0x03f0000 */
+/* Unused: 0x03e0000 */
/* ... overlap with subtarget options starts by 0x04000000. */
#define MASK_NO_RED_ZONE 0x04000000 /* Do not use red zone */
@@ -291,6 +292,8 @@ extern int x86_prefetch_sse;
#define TARGET_RED_ZONE (!(target_flags & MASK_NO_RED_ZONE))
+#define TARGET_USE_MS_BITFIELD_LAYOUT (target_flags & MASK_MS_BITFIELD_LAYOUT)
+
#define TARGET_GNU_TLS (ix86_tls_dialect == TLS_DIALECT_GNU)
#define TARGET_SUN_TLS (ix86_tls_dialect == TLS_DIALECT_SUN)
@@ -383,6 +386,10 @@ extern int x86_prefetch_sse;
N_("Generate 64bit x86-64 code") }, \
{ "32", -MASK_64BIT, \
N_("Generate 32bit i386 code") }, \
+ { "ms-bitfields", MASK_MS_BITFIELD_LAYOUT, \
+ N_("Use native (MS) bitfield layout") }, \
+ { "no-ms-bitfields", -MASK_MS_BITFIELD_LAYOUT, \
+ N_("Use gcc default bitfield layout") }, \
{ "red-zone", -MASK_NO_RED_ZONE, \
N_("Use red-zone in the x86-64 code") }, \
{ "no-red-zone", MASK_NO_RED_ZONE, \
Index: gcc/testsuite/gcc.dg/i386-bitfield1.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/i386-bitfield1.c,v
retrieving revision 1.2
diff -u -p -r1.2 i386-bitfield1.c
--- gcc/testsuite/gcc.dg/i386-bitfield1.c 7 Aug 2002 21:05:16 -0000 1.2
+++ gcc/testsuite/gcc.dg/i386-bitfield1.c 1 Nov 2002 17:10:25 -0000
@@ -1,6 +1,7 @@
// Test for bitfield alignment in structs on IA-32
// { dg-do run { target i?86-*-* } }
// { dg-options "-O2" }
+// { dg-options "-mno-align-double -mno-ms-bitfields" { target *-*-interix* } }
extern void abort (void);
extern void exit (int);
--- /dev/null Fri Nov 1 09:04:36 2002
+++ gcc/testsuite/gcc.dg/bf-ms-layout.c Tue Oct 29 19:00:18 2002
@@ -0,0 +1,232 @@
+/* bf-ms-layout.c */
+
+/* Test for MS bitfield layout */
+/* Adapted from Donn Terry <donnte@microsoft.com> testcase
+ posted to GCC-patches
+ http://gcc.gnu.org/ml/gcc-patches/2000-08/msg00577.html */
+
+/* { dg-do run { target *-*-interix* } } */
+/* { dg-options "-mms-bitfields -D_TEST_MS_LAYOUT" } */
+
+#include <stddef.h>
+#include <string.h>
+
+extern void abort();
+
+#pragma pack(8)
+
+struct one {
+ int d;
+ unsigned char a;
+ unsigned short b:7;
+ char c;
+};
+
+struct two {
+ int d;
+ unsigned char a;
+ unsigned int b:7;
+ char c;
+};
+
+struct three {
+ short d;
+ unsigned short a:3;
+ unsigned short b:9;
+ unsigned char c:7;
+};
+
+
+/* Bitfields of size 0 have some truly odd behaviors. */
+
+struct four {
+ unsigned short a:3;
+ unsigned short b:9;
+ unsigned int :0; /* forces struct alignment to int */
+ unsigned char c:7;
+};
+
+struct five {
+ char a;
+ int :0; /* ignored; prior field is not a bitfield. */
+ char b;
+ char c;
+};
+
+struct six {
+ char a :8;
+ int :0; /* not ignored; prior field IS a bitfield, causes
+ struct alignment as well. */
+ char b;
+ char c;
+} ;
+
+struct seven {
+ char a:8;
+ char :0;
+ int :0; /* Ignored; prior field is zero size bitfield. */
+ char b;
+ char c;
+};
+
+struct eight { /* ms size 4 */
+ short b:3;
+ char c;
+};
+
+#ifdef _MSC_VER
+#define LONGLONG __int64
+#else
+#define LONGLONG long long
+#endif
+
+union nine { /* ms size 8 */
+ LONGLONG a:3;
+ char c;
+};
+
+struct ten { /* ms size 16 */
+ LONGLONG a:3;
+ LONGLONG b:3;
+ char c;
+};
+
+
+#define val(s,f) (s.f)
+
+#define check_struct(_X) \
+{ \
+ if (sizeof (struct _X) != exp_sizeof_##_X ) \
+ abort(); \
+ memcpy(&test_##_X, filler, sizeof(test_##_X));\
+ if (val(test_##_X,c) != exp_##_X##_c) \
+ abort(); \
+}
+
+#define check_union(_X) \
+{ \
+ if (sizeof (union _X) != exp_sizeof_##_X ) \
+ abort(); \
+ memcpy(&test_##_X, filler, sizeof(test_##_X));\
+ if (val(test_##_X,c) != exp_##_X##_c) \
+ abort(); \
+}
+
+#define check_struct_size(_X) \
+{ \
+ if (sizeof (struct _X) != exp_sizeof_##_X ) \
+ abort(); \
+}
+
+#define check_struct_off(_X) \
+{ \
+ memcpy(&test_##_X, filler, sizeof(test_##_X));\
+ if (val(test_##_X,c) != exp_##_X##_c) \
+ abort(); \
+}
+
+#define check_union_size(_X) \
+{ \
+ if (sizeof (union _X) != exp_sizeof_##_X ) \
+ abort(); \
+}
+
+#define check_union_off(_X) \
+{ \
+ memcpy(&test_##_X, filler, sizeof(test_##_X));\
+ if (val(test_##_X,c) != exp_##_X##_c) \
+ abort(); \
+}
+
+int main(){
+
+ unsigned char filler[16];
+ struct one test_one;
+ struct two test_two;
+ struct three test_three;
+ struct four test_four;
+ struct five test_five;
+ struct six test_six;
+ struct seven test_seven;
+ struct eight test_eight;
+ union nine test_nine;
+ struct ten test_ten;
+
+#if defined (_TEST_MS_LAYOUT) || defined (_MSC_VER)
+ size_t exp_sizeof_one = 12;
+ size_t exp_sizeof_two = 16;
+ size_t exp_sizeof_three =6;
+ size_t exp_sizeof_four = 8;
+ size_t exp_sizeof_five = 3;
+ size_t exp_sizeof_six = 8;
+ size_t exp_sizeof_seven = 3;
+ size_t exp_sizeof_eight = 4;
+ size_t exp_sizeof_nine = 8;
+ size_t exp_sizeof_ten = 16;
+
+ unsigned char exp_one_c = 8;
+ unsigned char exp_two_c = 12;
+ unsigned char exp_three_c = 4;
+ unsigned char exp_four_c = 4;
+ char exp_five_c = 2;
+ char exp_six_c = 5;
+ char exp_seven_c = 2;
+ char exp_eight_c = 2;
+ char exp_nine_c = 0;
+ char exp_ten_c = 8;
+
+#else /* testing -mno-ms-bitfields */
+
+ size_t exp_sizeof_one = 8;
+ size_t exp_sizeof_two = 8;
+ size_t exp_sizeof_three = 6;
+ size_t exp_sizeof_four = 6;
+ size_t exp_sizeof_five = 6;
+ size_t exp_sizeof_six = 6;
+ size_t exp_sizeof_seven = 6;
+ size_t exp_sizeof_eight = 2;
+ size_t exp_sizeof_nine = 8;
+ size_t exp_sizeof_ten = 8;
+
+ unsigned short exp_one_c = 6;
+ unsigned int exp_two_c = 6;
+ unsigned char exp_three_c = 64;
+ unsigned char exp_four_c = 4;
+ char exp_five_c = 5;
+ char exp_six_c = 5;
+ char exp_seven_c = 5;
+ char exp_eight_c = 1;
+ char exp_nine_c = 0;
+ char exp_ten_c = 1;
+
+#endif
+
+ unsigned char i;
+ for ( i = 0; i < 16; i++ )
+ filler[i] = i;
+
+ check_struct_off (one);
+ check_struct_off (two);
+ check_struct_off (three);
+ check_struct_off (four);
+ check_struct_off (five);
+ check_struct_off (six);
+ check_struct_off (seven);
+ check_struct_off (eight);
+ check_union_off (nine);
+ check_struct_off (ten);
+
+ check_struct_size (one);
+ check_struct_size (two);
+ check_struct_size (three);
+ check_struct_size (four);
+ check_struct_size (five);
+ check_struct_size (six);
+ check_struct_size (seven);
+ check_struct_size (eight);
+ check_union_size (nine);
+ check_struct_size (ten);
+
+ return 0;
+};
+
--- /dev/null Fri Nov 1 09:04:36 2002
+++ gcc/testsuite/gcc.dg/bf-no-ms-layout.c Tue Oct 29 19:00:24 2002
@@ -0,0 +1,232 @@
+/* bf-no-ms-layout.c */
+
+/* Test for gcc bitfield layout, with -mno-ms-bitfields */
+/* Adapted from Donn Terry <donnte@microsoft.com> testcase
+ posted to GCC-patches
+ http://gcc.gnu.org/ml/gcc-patches/2000-08/msg00577.html */
+
+/* { dg-do run { target *-*-interix* } } */
+/* { dg-options "-mno-ms-bitfields" } */
+
+#include <stddef.h>
+#include <string.h>
+
+extern void abort();
+
+#pragma pack(8)
+
+struct one {
+ int d;
+ unsigned char a;
+ unsigned short b:7;
+ char c;
+};
+
+struct two {
+ int d;
+ unsigned char a;
+ unsigned int b:7;
+ char c;
+};
+
+struct three {
+ short d;
+ unsigned short a:3;
+ unsigned short b:9;
+ unsigned char c:7;
+};
+
+
+/* Bitfields of size 0 have some truly odd behaviors. */
+
+struct four {
+ unsigned short a:3;
+ unsigned short b:9;
+ unsigned int :0; /* forces struct alignment to int */
+ unsigned char c:7;
+};
+
+struct five {
+ char a;
+ int :0; /* ignored; prior field is not a bitfield. */
+ char b;
+ char c;
+};
+
+struct six {
+ char a :8;
+ int :0; /* not ignored; prior field IS a bitfield, causes
+ struct alignment as well. */
+ char b;
+ char c;
+} ;
+
+struct seven {
+ char a:8;
+ char :0;
+ int :0; /* Ignored; prior field is zero size bitfield. */
+ char b;
+ char c;
+};
+
+struct eight { /* ms size 4 */
+ short b:3;
+ char c;
+};
+
+#ifdef _MSC_VER
+#define LONGLONG __int64
+#else
+#define LONGLONG long long
+#endif
+
+union nine { /* ms size 8 */
+ LONGLONG a:3;
+ char c;
+};
+
+struct ten { /* ms size 16 */
+ LONGLONG a:3;
+ LONGLONG b:3;
+ char c;
+};
+
+
+#define val(s,f) (s.f)
+
+#define check_struct(_X) \
+{ \
+ if (sizeof (struct _X) != exp_sizeof_##_X ) \
+ abort(); \
+ memcpy(&test_##_X, filler, sizeof(test_##_X));\
+ if (val(test_##_X,c) != exp_##_X##_c) \
+ abort(); \
+}
+
+#define check_union(_X) \
+{ \
+ if (sizeof (union _X) != exp_sizeof_##_X ) \
+ abort(); \
+ memcpy(&test_##_X, filler, sizeof(test_##_X));\
+ if (val(test_##_X,c) != exp_##_X##_c) \
+ abort(); \
+}
+
+#define check_struct_size(_X) \
+{ \
+ if (sizeof (struct _X) != exp_sizeof_##_X ) \
+ abort(); \
+}
+
+#define check_struct_off(_X) \
+{ \
+ memcpy(&test_##_X, filler, sizeof(test_##_X));\
+ if (val(test_##_X,c) != exp_##_X##_c) \
+ abort(); \
+}
+
+#define check_union_size(_X) \
+{ \
+ if (sizeof (union _X) != exp_sizeof_##_X ) \
+ abort(); \
+}
+
+#define check_union_off(_X) \
+{ \
+ memcpy(&test_##_X, filler, sizeof(test_##_X));\
+ if (val(test_##_X,c) != exp_##_X##_c) \
+ abort(); \
+}
+
+int main(){
+
+ unsigned char filler[16];
+ struct one test_one;
+ struct two test_two;
+ struct three test_three;
+ struct four test_four;
+ struct five test_five;
+ struct six test_six;
+ struct seven test_seven;
+ struct eight test_eight;
+ union nine test_nine;
+ struct ten test_ten;
+
+#if defined (_TEST_MS_LAYOUT) || defined (_MSC_VER)
+ size_t exp_sizeof_one = 12;
+ size_t exp_sizeof_two = 16;
+ size_t exp_sizeof_three =6;
+ size_t exp_sizeof_four = 8;
+ size_t exp_sizeof_five = 3;
+ size_t exp_sizeof_six = 8;
+ size_t exp_sizeof_seven = 3;
+ size_t exp_sizeof_eight = 4;
+ size_t exp_sizeof_nine = 8;
+ size_t exp_sizeof_ten = 16;
+
+ unsigned char exp_one_c = 8;
+ unsigned char exp_two_c = 12;
+ unsigned char exp_three_c = 4;
+ unsigned char exp_four_c = 4;
+ char exp_five_c = 2;
+ char exp_six_c = 5;
+ char exp_seven_c = 2;
+ char exp_eight_c = 2;
+ char exp_nine_c = 0;
+ char exp_ten_c = 8;
+
+#else /* testing -mno-ms-bitfields */
+
+ size_t exp_sizeof_one = 8;
+ size_t exp_sizeof_two = 8;
+ size_t exp_sizeof_three = 6;
+ size_t exp_sizeof_four = 6;
+ size_t exp_sizeof_five = 6;
+ size_t exp_sizeof_six = 6;
+ size_t exp_sizeof_seven = 6;
+ size_t exp_sizeof_eight = 2;
+ size_t exp_sizeof_nine = 8;
+ size_t exp_sizeof_ten = 8;
+
+ unsigned short exp_one_c = 6;
+ unsigned int exp_two_c = 6;
+ unsigned char exp_three_c = 64;
+ unsigned char exp_four_c = 4;
+ char exp_five_c = 5;
+ char exp_six_c = 5;
+ char exp_seven_c = 5;
+ char exp_eight_c = 1;
+ char exp_nine_c = 0;
+ char exp_ten_c = 1;
+
+#endif
+
+ unsigned char i;
+ for ( i = 0; i < 16; i++ )
+ filler[i] = i;
+
+ check_struct_off (one);
+ check_struct_off (two);
+ check_struct_off (three);
+ check_struct_off (four);
+ check_struct_off (five);
+ check_struct_off (six);
+ check_struct_off (seven);
+ check_struct_off (eight);
+ check_union_off (nine);
+ check_struct_off (ten);
+
+ check_struct_size (one);
+ check_struct_size (two);
+ check_struct_size (three);
+ check_struct_size (four);
+ check_struct_size (five);
+ check_struct_size (six);
+ check_struct_size (seven);
+ check_struct_size (eight);
+ check_union_size (nine);
+ check_struct_size (ten);
+
+ return 0;
+};
+
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [3.4-BIB] Turn on MS bitfields for Interix
2002-11-04 22:00 [3.4-BIB] Turn on MS bitfields for Interix Douglas B Rupp
@ 2002-11-05 21:26 ` Douglas B Rupp
2002-11-06 10:34 ` Richard Henderson
1 sibling, 0 replies; 3+ messages in thread
From: Douglas B Rupp @ 2002-11-05 21:26 UTC (permalink / raw)
To: gcc-patches
Also, I meant to ask:
OK to commit?
----- Original Message -----
From: "Douglas B Rupp" <rupp@gnat.com>
To: <gcc-patches@gcc.gnu.org>
Sent: Monday, November 04, 2002 10:00 PM
Subject: [3.4-BIB] Turn on MS bitfields for Interix
> This patch adds the MS bitfield option to i386 as previously suggested
> (since it is potentially applicable to all i386 subtargets),
> turns them on by default for Interix, and adds a couple of tests.
>
>
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [3.4-BIB] Turn on MS bitfields for Interix
2002-11-04 22:00 [3.4-BIB] Turn on MS bitfields for Interix Douglas B Rupp
2002-11-05 21:26 ` Douglas B Rupp
@ 2002-11-06 10:34 ` Richard Henderson
1 sibling, 0 replies; 3+ messages in thread
From: Richard Henderson @ 2002-11-06 10:34 UTC (permalink / raw)
To: Douglas B Rupp; +Cc: gcc-patches
On Mon, Nov 04, 2002 at 10:00:33PM -0800, Douglas B Rupp wrote:
> * config/i386/i386-interix.h (TARGET_SUBTARGET_DEFAULT): Or
> MASK_MS_BITFIELD_LAYOUT
> (SUBTARGET_OVERRIDE_OPTIONS): Warn about and turn off
> MS bitfields for Objective-C.
> (PCC_BIT_FIELD_TYPE_TEST, GROUP_BITFIELDS_BY_ALIGN): Remove
> defines.
>
> * config/i386/i386.c (ix86_ms_bitfield_layout): New function.
> (TARGET_MS_BITFIELD_LAYOUT_P): Define to above function.
> (TARGET_USE_MS_BITFIELD_LAYOUT): Define.
>
> * config/i386/i386.h (MASK_MS_BITFIELD_LAYOUT: New mask.
> TARGET_USE_MS_BITFIELD_LAYOUT): New macro.
> (TARGET_SWITCHES): Add above mask.
>
> * testsuite/gcc.dg/bf-ms-layout.c: New test case.
> * testsuite/gcc.dg/bf-no-ms-layout.c: New test case.
> * testsuite/gcc.dg/i386-bitfield1.c (dg-options): Add appropriate
> flags for interix.
Ok.
r~
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2002-11-06 18:34 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-11-04 22:00 [3.4-BIB] Turn on MS bitfields for Interix Douglas B Rupp
2002-11-05 21:26 ` Douglas B Rupp
2002-11-06 10:34 ` Richard Henderson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).