From 9a155f914c56ddbe1589f73ebb99e4c6a025c402 Mon Sep 17 00:00:00 2001 From: Geoffrey Keating Date: Tue, 13 Feb 2001 02:44:54 +0000 Subject: [PATCH] sysv4.h (MASK_NO_BITFIELD_WORD): New macro. * config/rs6000/sysv4.h (MASK_NO_BITFIELD_WORD): New macro. (TARGET_NO_BITFIELD_WORD): New macro. (SUBTARGET_SWITCHES): Add -mbit-word, -mno-bit-word options. (BITFIELD_NBYTES_LIMITED): Define based on TARGET_NO_BITFIELD_WORD. From-SVN: r39613 --- gcc/ChangeLog | 7 +++++++ gcc/config/rs6000/sysv4.h | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 026d93e8908..a45377684e7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2001-02-12 Geoffrey Keating + + * config/rs6000/sysv4.h (MASK_NO_BITFIELD_WORD): New macro. + (TARGET_NO_BITFIELD_WORD): New macro. + (SUBTARGET_SWITCHES): Add -mbit-word, -mno-bit-word options. + (BITFIELD_NBYTES_LIMITED): Define based on TARGET_NO_BITFIELD_WORD. + Mon Feb 12 18:13:26 2001 Richard Kenner * cselib.c: New file, from simplify-rtx.c. diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h index db775304209..5f1f950f8fd 100644 --- a/gcc/config/rs6000/sysv4.h +++ b/gcc/config/rs6000/sysv4.h @@ -57,6 +57,7 @@ extern enum rs6000_sdata_type rs6000_sdata; #define MASK_REGNAMES 0x02000000 /* Use alternate register names. */ #define MASK_PROTOTYPE 0x01000000 /* Only prototyped fcns pass variable args. */ #define MASK_LONG_DOUBLE_128 0x00800000 /* Use IEEE quad long double. */ +#define MASK_NO_BITFIELD_WORD 0x00400000 /* Bitfields cannot cross word boundaries */ #define TARGET_NO_BITFIELD_TYPE (target_flags & MASK_NO_BITFIELD_TYPE) #define TARGET_STRICT_ALIGN (target_flags & MASK_STRICT_ALIGN) @@ -66,6 +67,7 @@ extern enum rs6000_sdata_type rs6000_sdata; #define TARGET_REGNAMES (target_flags & MASK_REGNAMES) #define TARGET_PROTOTYPE (target_flags & MASK_PROTOTYPE) #define TARGET_LONG_DOUBLE_128 (target_flags & MASK_LONG_DOUBLE_128) +#define TARGET_NO_BITFIELD_WORD (target_flags & MASK_NO_BITFIELD_WORD) #define TARGET_TOC ((target_flags & MASK_64BIT) \ || ((target_flags & (MASK_RELOCATABLE \ | MASK_MINIMAL_TOC)) \ @@ -136,6 +138,9 @@ extern int g_switch_set; /* Whether -G xx was passed. */ { "no-traceback", 0, N_("no description yet") }, \ { "eabi", MASK_EABI, N_("Use EABI.") }, \ { "no-eabi", -MASK_EABI, N_("Don't use EABI.") }, \ + { "bit-word", -MASK_NO_BITFIELD_WORD, "" }, \ + { "no-bit-word", MASK_NO_BITFIELD_WORD, \ + N_("Do not allow bitfields to cross word boundaries") }, \ { "regnames", MASK_REGNAMES, \ N_("Use alternate register names.") }, \ { "no-regnames", -MASK_REGNAMES, \ @@ -380,6 +385,9 @@ do { \ #undef PCC_BITFIELD_TYPE_MATTERS #define PCC_BITFIELD_TYPE_MATTERS (TARGET_BITFIELD_TYPE) +#undef BITFIELD_NBYTES_LIMITED +#define BITFIELD_NBYTES_LIMITED (TARGET_NO_BITFIELD_WORD) + /* Define this macro to be the value 1 if instructions will fail to work if given data not on the nominal alignment. If instructions will merely go slower in that case, define this macro as 0. */