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: r186743
This commit is contained in:
Jakub Jelinek 2012-04-24 08:08:55 +02:00 committed by Jakub Jelinek
parent 74da3af93b
commit 2c2c513a9a
2 changed files with 17 additions and 6 deletions

View File

@ -1,3 +1,9 @@
2012-04-24 Jakub Jelinek <jakub@redhat.com>
PR middle-end/52999
* varasm.c (get_section): Don't ICE for section conflicts with
built-in section kinds.
2012-04-23 David Edelsohn <dje.gcc@gmail.com>
* config/rs6000/sync.md (fetchop_name): Change ior attribute to "or".

View File

@ -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.
@ -315,11 +315,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;
}