mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-31 15:31:11 +08:00
darwin.c (darwin_one_byte_bool): New global variable.
* config/darwin.c (darwin_one_byte_bool): New global variable. * config/darwin.h (darwin_one_byte_bool): Declare. (SUBTARGET_OPTIONS): Define macro. (for -mone-byte-bool flag.) * config/rs6000/darwin.h (BOOL_TYPE_SIZE): Conditionalize on value of darwin_one_byte_bool. * doc/invoke.texi: Document -mone-byte-bool flag. * testsuite/gcc.dg/darwin-bool-1.c: New test. * testsuite/gcc.dg/darwin-bool-2.c: New test. From-SVN: r85277
This commit is contained in:
parent
9f63daea37
commit
8f4220dc92
@ -1,3 +1,12 @@
|
||||
2004-07-28 Matt Austern <austern@apple.com>
|
||||
|
||||
* config/darwin.c (darwin_one_byte_bool): New global variable.
|
||||
* config/darwin.h (darwin_one_byte_bool): Declare.
|
||||
(SUBTARGET_OPTIONS): Define macro. (for -mone-byte-bool flag.)
|
||||
* config/rs6000/darwin.h (BOOL_TYPE_SIZE): Conditionalize on
|
||||
value of darwin_one_byte_bool.
|
||||
* doc/invoke.texi: Document -mone-byte-bool flag.
|
||||
|
||||
2004-07-28 Eric Christopher <echristo@redhat.com>
|
||||
|
||||
* c-common.c (c_common_unsafe_for_reeval): Delete.
|
||||
|
@ -44,6 +44,10 @@ Boston, MA 02111-1307, USA. */
|
||||
#include "errors.h"
|
||||
#include "hashtab.h"
|
||||
|
||||
/* Nonzero if the user passes the -mone-byte-bool switch, which forces
|
||||
sizeof(bool) to be 1. */
|
||||
const char *darwin_one_byte_bool = 0;
|
||||
|
||||
int
|
||||
name_needs_quotes (const char *name)
|
||||
{
|
||||
|
@ -130,7 +130,18 @@ Boston, MA 02111-1307, USA. */
|
||||
{ "-single_module", "-Zsingle_module" }, \
|
||||
{ "-unexported_symbols_list", "-Zunexported_symbols_list" }, \
|
||||
SUBTARGET_OPTION_TRANSLATE_TABLE
|
||||
|
||||
/* Nonzero if the user has chosen to force sizeof(bool) to be 1
|
||||
by providing the -mone-byte-bool switch. It would be better
|
||||
to use SUBTARGET_SWITCHES for this instead of SUBTARGET_OPTIONS,
|
||||
but there are no more bits in rs6000 TARGET_SWITCHES. Note
|
||||
that this switch has no "no-" variant. */
|
||||
extern const char *darwin_one_byte_bool;
|
||||
|
||||
#undef SUBTARGET_OPTIONS
|
||||
#define SUBTARGET_OPTIONS \
|
||||
{"one-byte-bool", &darwin_one_byte_bool, N_("Set sizeof(bool) to 1"), 0 }
|
||||
|
||||
/* These compiler options take n arguments. */
|
||||
|
||||
#undef WORD_SWITCH_TAKES_ARG
|
||||
|
@ -321,8 +321,10 @@ do { \
|
||||
#define DOUBLE_INT_ASM_OP "\t.quad\t"
|
||||
|
||||
/* For binary compatibility with 2.95; Darwin C APIs use bool from
|
||||
stdbool.h, which was an int-sized enum in 2.95. */
|
||||
#define BOOL_TYPE_SIZE INT_TYPE_SIZE
|
||||
stdbool.h, which was an int-sized enum in 2.95. Users can explicitly
|
||||
choose to have sizeof(bool)==1 with the -mone-byte-bool switch. */
|
||||
extern const char *darwin_one_byte_bool;
|
||||
#define BOOL_TYPE_SIZE (darwin_one_byte_bool ? CHAR_TYPE_SIZE : INT_TYPE_SIZE)
|
||||
|
||||
#undef REGISTER_TARGET_PRAGMAS
|
||||
#define REGISTER_TARGET_PRAGMAS DARWIN_REGISTER_TARGET_PRAGMAS
|
||||
|
@ -423,7 +423,7 @@ in the following sections.
|
||||
-single_module -static -sub_library -sub_umbrella @gol
|
||||
-twolevel_namespace -umbrella -undefined @gol
|
||||
-unexported_symbols_list -weak_reference_mismatches @gol
|
||||
-whatsloaded -F -gused -gfull}
|
||||
-whatsloaded -F -gused -gfull -mone-byte-bool}
|
||||
|
||||
@emph{DEC Alpha Options}
|
||||
@gccoptlist{-mno-fp-regs -msoft-float -malpha-as -mgas @gol
|
||||
@ -6931,6 +6931,19 @@ This is by default ON.
|
||||
@opindex -gfull
|
||||
Emit debugging information for all symbols and types.
|
||||
|
||||
@item -mone-byte-bool
|
||||
@opindex -mone-byte-bool
|
||||
Override the defaults for @samp{bool} so that @samp{sizeof(bool)==1}.
|
||||
By default @samp{sizeof(bool)} is @samp{4} when compiling for
|
||||
Darwin/PowerPC and @samp{1} when compiling for Darwin/x86, so this
|
||||
option has no effect on x86.
|
||||
|
||||
@strong{Warning:} The @option{-mone-byte-bool} switch causes GCC
|
||||
to generate code that is not binary compatible with code generated
|
||||
without that switch. Using this switch may require recompiling all
|
||||
other modules in a program, including system libraries. Use this
|
||||
switch to conform to a non-default data model.
|
||||
|
||||
@item -all_load
|
||||
@opindex all_load
|
||||
Loads all members of static archive libraries.
|
||||
|
@ -1,3 +1,8 @@
|
||||
2004-07-27 Matt Austern <austern@apple.com>
|
||||
|
||||
* gcc.dg/darwin-bool-1.c: New test.
|
||||
* gcc.dg/darwin-bool-2.c: New test.
|
||||
|
||||
2004-07-28 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* gfortran.fortran-torture/execute/intrinsic_spacing.f90: Pass
|
||||
|
11
gcc/testsuite/gcc.dg/darwin-bool-1.c
Normal file
11
gcc/testsuite/gcc.dg/darwin-bool-1.c
Normal file
@ -0,0 +1,11 @@
|
||||
/* Check that sizeof(bool) is 4 if we don't use special options. */
|
||||
/* Matt Austern <austern@apple.com> */
|
||||
/* { dg-do run { target powerpc*-*-darwin* } } */
|
||||
|
||||
int dummy1[sizeof(_Bool) - 3];
|
||||
int dummy2[5 - sizeof(_Bool)];
|
||||
|
||||
int main()
|
||||
{
|
||||
return sizeof(_Bool) == 4 ? 0 : 1;
|
||||
}
|
12
gcc/testsuite/gcc.dg/darwin-bool-2.c
Normal file
12
gcc/testsuite/gcc.dg/darwin-bool-2.c
Normal file
@ -0,0 +1,12 @@
|
||||
/* Check that sizeof(bool) is 1 if we use the -mone-byte-bool option. */
|
||||
/* Matt Austern <austern@apple.com> */
|
||||
/* { dg-do run { target powerpc*-*-darwin* } } */
|
||||
/* { dg-options "-mone-byte-bool" } */
|
||||
|
||||
int dummy1[sizeof(_Bool)];
|
||||
int dummy2[2 - sizeof(_Bool)];
|
||||
|
||||
int main()
|
||||
{
|
||||
return sizeof(_Bool) == 1 ? 0 : 1;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user