* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@110917
138bc75d-0d04-0410-961f-
82ee72b054a4
+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>
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>
* g++.dg/warn/no-write-strings.C: New test.
/* { 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"))) int (*actions[])(void) = {};
void unpack_to_rootfs(void)
--- /dev/null
+/* 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" } } */
# the same test run.
proc check_named_sections_available { } {
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;
}]]
verbose "check_named_sections_available: returning $answer" 2
reloc = 1;
#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
- return hot_function_section (decl);
+ return reloc ? unlikely_text_section () : hot_function_section (decl);
#endif
}
current_function_section (void)
{
#ifdef USE_SELECT_SECTION_FOR_FUNCTIONS
- return targetm.asm_out.select_section (current_function_decl,
- in_cold_section_p,
- DECL_ALIGN (current_function_decl));
+ if (current_function_decl != NULL_TREE
+ && DECL_SECTION_NAME (current_function_decl) != NULL_TREE)
+ 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
return (in_cold_section_p
? unlikely_text_section ()