re PR lto/42528 (ICE with -flto and -fsigned-char)
2010-01-08 Richard Guenther <rguenther@suse.de> 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
This commit is contained in:
parent
c8ae061371
commit
c59449fa24
@ -1,3 +1,9 @@
|
||||
2010-01-08 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR lto/42528
|
||||
* c.opt (fsigned-char): Also let LTO handle this option.
|
||||
(funsigned-char): Likewise.
|
||||
|
||||
2010-01-07 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
* gimple.h (gss_for_code): Wrap gcc_assert in ENABLE_CHECKING.
|
||||
|
@ -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
|
||||
|
@ -1,3 +1,10 @@
|
||||
2010-01-08 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
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 <hongjiu.lu@intel.com>
|
||||
|
||||
PR lto/41564
|
||||
|
@ -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)
|
||||
|
@ -1,3 +1,9 @@
|
||||
2010-01-08 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
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 <burnus@net-b.de
|
||||
|
||||
PR/fortran 25829
|
||||
|
8
gcc/testsuite/gcc.dg/lto/20100103-1_0.c
Normal file
8
gcc/testsuite/gcc.dg/lto/20100103-1_0.c
Normal file
@ -0,0 +1,8 @@
|
||||
/* { dg-lto-do link } */
|
||||
/* { dg-lto-options {{-funsigned-char -flto} {-fsigned-char -flto}} } */
|
||||
|
||||
char *foo;
|
||||
int main()
|
||||
{
|
||||
foo = "bar";
|
||||
}
|
12
gcc/testsuite/gcc.dg/lto/20100103-2_0.c
Normal file
12
gcc/testsuite/gcc.dg/lto/20100103-2_0.c
Normal file
@ -0,0 +1,12 @@
|
||||
/* { dg-lto-do link } */
|
||||
/* { dg-lto-options {{-O -flto -funsigned-char} {-O -flto -fsigned-char}} } */
|
||||
|
||||
char p[32] = "";
|
||||
int main ()
|
||||
{
|
||||
if (__builtin___strcpy_chk (p + 1, "vwxyz",
|
||||
__builtin_object_size (p + 1, 0)) != p + 1)
|
||||
__builtin_abort ();
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user