From c59449fa245b3ec2397a7020dab35deb876b9c5e Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Fri, 8 Jan 2010 16:57:59 +0000 Subject: [PATCH] re PR lto/42528 (ICE with -flto and -fsigned-char) 2010-01-08 Richard Guenther PR lto/42528 * c.opt (fsigned-char): Also let LTO handle this option. (funsigned-char): Likewise. lto/ * lto-lang.c (lto_handle_option): Handle -f[un]signed-char. (lto_init): Do not init char_type_node in a standard way but according to flag_signed_char. * gcc.dg/lto/20100103-1_0.c: New testcase. * gcc.dg/lto/20100103-2_0.c: Likewise. From-SVN: r155740 --- gcc/ChangeLog | 6 ++++++ gcc/c.opt | 4 ++-- gcc/lto/ChangeLog | 7 +++++++ gcc/lto/lto-lang.c | 13 ++++++++++++- gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/gcc.dg/lto/20100103-1_0.c | 8 ++++++++ gcc/testsuite/gcc.dg/lto/20100103-2_0.c | 12 ++++++++++++ 7 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/lto/20100103-1_0.c create mode 100644 gcc/testsuite/gcc.dg/lto/20100103-2_0.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 45f91b98cb22..4f7f36f80486 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-01-08 Richard Guenther + + PR lto/42528 + * c.opt (fsigned-char): Also let LTO handle this option. + (funsigned-char): Likewise. + 2010-01-07 Richard Guenther * gimple.h (gss_for_code): Wrap gcc_assert in ENABLE_CHECKING. diff --git a/gcc/c.opt b/gcc/c.opt index 429c035f38fb..bdf9531ad804 100644 --- a/gcc/c.opt +++ b/gcc/c.opt @@ -769,7 +769,7 @@ C ObjC C++ ObjC++ When \"signed\" or \"unsigned\" is not given make the bitfield signed fsigned-char -C ObjC C++ ObjC++ +C ObjC C++ ObjC++ LTO Make \"char\" signed by default fsquangle @@ -802,7 +802,7 @@ C ObjC C++ ObjC++ When \"signed\" or \"unsigned\" is not given make the bitfield unsigned funsigned-char -C ObjC C++ ObjC++ +C ObjC C++ ObjC++ LTO Make \"char\" unsigned by default fuse-cxa-atexit diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog index 92e595fac670..5e52527a29f4 100644 --- a/gcc/lto/ChangeLog +++ b/gcc/lto/ChangeLog @@ -1,3 +1,10 @@ +2010-01-08 Richard Guenther + + PR lto/42528 + * lto-lang.c (lto_handle_option): Handle -f[un]signed-char. + (lto_init): Do not init char_type_node in a standard way + but according to flag_signed_char. + 2010-01-03 H.J. Lu PR lto/41564 diff --git a/gcc/lto/lto-lang.c b/gcc/lto/lto-lang.c index 970265c2a74e..05577a29371f 100644 --- a/gcc/lto/lto-lang.c +++ b/gcc/lto/lto-lang.c @@ -632,6 +632,14 @@ lto_handle_option (size_t scode, const char *arg, int value ATTRIBUTE_UNUSED) warn_psabi = value; break; + case OPT_fsigned_char: + flag_signed_char = value; + break; + + case OPT_funsigned_char: + flag_signed_char = !value; + break; + default: break; } @@ -1036,8 +1044,11 @@ lto_init (void) /* Share char_type_node with whatever would be the default for the target. char_type_node will be used for internal types such as va_list_type_node but will not be present in the lto stream. */ + /* ??? This breaks the more common case of consistent but non-standard + setting of flag_signed_char, so share according to flag_signed_char. + See PR42528. */ char_type_node - = DEFAULT_SIGNED_CHAR ? signed_char_type_node : unsigned_char_type_node; + = flag_signed_char ? signed_char_type_node : unsigned_char_type_node; /* Tell the middle end what type to use for the size of objects. */ if (strcmp (SIZE_TYPE, "unsigned int") == 0) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e96fbd2d4a47..f21a58379eff 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2010-01-08 Richard Guenther + + PR lto/42528 + * gcc.dg/lto/20100103-1_0.c: New testcase. + * gcc.dg/lto/20100103-2_0.c: Likewise. + 2010-01-08 Tobias Burnus