From: Jakub Jelinek Date: Tue, 24 Apr 2012 06:03:43 +0000 (+0200) Subject: re PR target/52999 (ICE, segmentation fault in c_tree_printer) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=06edd772e354ab922fa429bfe788a006f53511d8;p=gcc.git re PR target/52999 (ICE, segmentation fault in c_tree_printer) PR middle-end/52999 * varasm.c (get_section): Don't ICE for section conflicts with built-in section kinds. From-SVN: r186741 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1cdac985ac5..f3992e1b8b2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-04-24 Jakub Jelinek + + PR middle-end/52999 + * varasm.c (get_section): Don't ICE for section conflicts with + built-in section kinds. + 2012-04-23 DJ Delorie * config/s390/s390.h (LINK_SPEC): Remove, no longer needed. diff --git a/gcc/varasm.c b/gcc/varasm.c index c3d289eb91a..b7939c54a84 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -1,7 +1,7 @@ /* Output variables, constants and external declarations, for GNU compiler. Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, - 2010, 2011 Free Software Foundation, Inc. + 2010, 2011, 2012 Free Software Foundation, Inc. This file is part of GCC. @@ -314,11 +314,16 @@ get_section (const char *name, unsigned int flags, tree decl) if (decl == 0) decl = sect->named.decl; gcc_assert (decl); - error ("%+D causes a section type conflict with %D", - decl, sect->named.decl); - if (decl != sect->named.decl) - inform (DECL_SOURCE_LOCATION (sect->named.decl), - "%qD was declared here", sect->named.decl); + if (sect->named.decl == NULL) + error ("%+D causes a section type conflict", decl); + else + { + error ("%+D causes a section type conflict with %D", + decl, sect->named.decl); + if (decl != sect->named.decl) + inform (DECL_SOURCE_LOCATION (sect->named.decl), + "%qD was declared here", sect->named.decl); + } /* Make sure we don't error about one section multiple times. */ sect->common.flags |= SECTION_OVERRIDE; }