except.c (switch_to_exception_section): Place tables for DECL_ONE_ONLY functions in comdat groups.

2012-08-07  Paul Brook  <paul@codesourcery.com>
	    Sandra Loosemore  <sandra@codesourcery.com>

	gcc/
	* except.c (switch_to_exception_section): Place tables for
	DECL_ONE_ONLY functions in comdat groups.

Co-Authored-By: Sandra Loosemore <sandra@codesourcery.com>

From-SVN: r190206
This commit is contained in:
Paul Brook 2012-08-07 16:08:49 +00:00 committed by Sandra Loosemore
parent 070ecdfd03
commit 3e6011cfeb
2 changed files with 13 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2012-08-07 Paul Brook <paul@codesourcery.com>
Sandra Loosemore <sandra@codesourcery.com>
* except.c (switch_to_exception_section): Place tables for
DECL_ONE_ONLY functions in comdat groups.
2012-08-07 Richard Guenther <rguenther@suse.de>
* tree-flow.h (copy_ssa_name_fn): New function.

View File

@ -2777,11 +2777,16 @@ switch_to_exception_section (const char * ARG_UNUSED (fnname))
flags = SECTION_WRITE;
#ifdef HAVE_LD_EH_GC_SECTIONS
if (flag_function_sections)
if (flag_function_sections
|| (DECL_ONE_ONLY (current_function_decl) && HAVE_COMDAT_GROUP))
{
char *section_name = XNEWVEC (char, strlen (fnname) + 32);
/* The EH table must match the code section, so only mark
it linkonce if we have COMDAT groups to tie them together. */
if (DECL_ONE_ONLY (current_function_decl) && HAVE_COMDAT_GROUP)
flags |= SECTION_LINKONCE;
sprintf (section_name, ".gcc_except_table.%s", fnname);
s = get_section (section_name, flags, NULL);
s = get_section (section_name, flags, current_function_decl);
free (section_name);
}
else