Commit 4c553323 by Josh Conner Committed by Josh Conner

re PR target/25376 (section attribute doesn't work on darwin)

PR target/25376
* varasm.c (function_section): Check for section name before
calling select_section on targets that define
USE_SELECT_SECTION_FOR_FUNCTIONS.  On other targets, use
unlikely_text_section instead of hot_function_section if
first_function_block_is_cold.
* gcc.dg/pr25376.c: New test.

* gcc.c-torture/compile/pr23237.c: Only compile test -- don't
assemble.
* lib/target-supports.exp (check_named_sections_available):
Only compile named-sections test -- don't assemble.

From-SVN: r110917
parent e98aa197
2006-02-13 Josh Conner <jconner@apple.com>
PR target/25376
* varasm.c (function_section): Check for section name before
calling select_section on targets that define
USE_SELECT_SECTION_FOR_FUNCTIONS. On other targets, use
unlikely_text_section instead of hot_function_section if
first_function_block_is_cold.
2006-02-13 J"orn Rennecke <joern.rennecke@st.com> 2006-02-13 J"orn Rennecke <joern.rennecke@st.com>
PR middle-end/25335 PR middle-end/25335
......
2006-02-13 Josh Conner <jconner@apple.com>
PR target/25376
* gcc.dg/pr25376.c: New test.
* gcc.c-torture/compile/pr23237.c: Only compile test -- don't
assemble.
* lib/target-supports.exp (check_named_sections_available):
Only compile named-sections test -- don't assemble.
2006-02-12 Gabriel Dos Reis <gdr@integrable-solutions.net> 2006-02-12 Gabriel Dos Reis <gdr@integrable-solutions.net>
* g++.dg/warn/no-write-strings.C: New test. * g++.dg/warn/no-write-strings.C: New test.
/* { dg-require-effective-target named_sections } */ /* { dg-require-effective-target named_sections } */
/* Don't assemble, as this section syntax may not be valid on all platforms
(e.g., Darwin). */
/* { dg-do compile } */
static __attribute__ ((__section__ (".init.data"))) char *message; static __attribute__ ((__section__ (".init.data"))) char *message;
static __attribute__ ((__section__ (".init.data"))) int (*actions[])(void) = {}; static __attribute__ ((__section__ (".init.data"))) int (*actions[])(void) = {};
void unpack_to_rootfs(void) void unpack_to_rootfs(void)
......
/* PR25376. Verify that a named section is honored. */
/* { dg-require-named-sections "" } */
void simple (void) __attribute__((section("my_named_section")));
void simple (void)
{
}
/* { dg-final { scan-assembler "my_named_section" } } */
...@@ -637,7 +637,7 @@ proc check_iconv_available { test_what } { ...@@ -637,7 +637,7 @@ proc check_iconv_available { test_what } {
# the same test run. # the same test run.
proc check_named_sections_available { } { proc check_named_sections_available { } {
verbose "check_named_sections_available: compiling source" 2 verbose "check_named_sections_available: compiling source" 2
set answer [string match "" [get_compiler_messages named object { set answer [string match "" [get_compiler_messages named assembly {
int __attribute__ ((section("whatever"))) foo; int __attribute__ ((section("whatever"))) foo;
}]] }]]
verbose "check_named_sections_available: returning $answer" 2 verbose "check_named_sections_available: returning $answer" 2
......
...@@ -440,9 +440,14 @@ function_section (tree decl) ...@@ -440,9 +440,14 @@ function_section (tree decl)
reloc = 1; reloc = 1;
#ifdef USE_SELECT_SECTION_FOR_FUNCTIONS #ifdef USE_SELECT_SECTION_FOR_FUNCTIONS
return targetm.asm_out.select_section (decl, reloc, DECL_ALIGN (decl)); if (decl != NULL_TREE
&& DECL_SECTION_NAME (decl) != NULL_TREE)
return reloc ? unlikely_text_section ()
: get_named_section (decl, NULL, 0);
else
return targetm.asm_out.select_section (decl, reloc, DECL_ALIGN (decl));
#else #else
return hot_function_section (decl); return reloc ? unlikely_text_section () : hot_function_section (decl);
#endif #endif
} }
...@@ -450,9 +455,15 @@ section * ...@@ -450,9 +455,15 @@ section *
current_function_section (void) current_function_section (void)
{ {
#ifdef USE_SELECT_SECTION_FOR_FUNCTIONS #ifdef USE_SELECT_SECTION_FOR_FUNCTIONS
return targetm.asm_out.select_section (current_function_decl, if (current_function_decl != NULL_TREE
in_cold_section_p, && DECL_SECTION_NAME (current_function_decl) != NULL_TREE)
DECL_ALIGN (current_function_decl)); return in_cold_section_p ? unlikely_text_section ()
: get_named_section (current_function_decl,
NULL, 0);
else
return targetm.asm_out.select_section (current_function_decl,
in_cold_section_p,
DECL_ALIGN (current_function_decl));
#else #else
return (in_cold_section_p return (in_cold_section_p
? unlikely_text_section () ? unlikely_text_section ()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment