diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fdd53c50819..525076600e0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2009-03-02 Ulrich Weigand + + * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define. + (spu_section_type_flags): New function. + 2009-03-02 Uros Bizjak * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy diff --git a/gcc/config/spu/spu.c b/gcc/config/spu/spu.c index a29125269e5..c2fbb331b0a 100644 --- a/gcc/config/spu/spu.c +++ b/gcc/config/spu/spu.c @@ -143,6 +143,7 @@ static bool spu_vector_alignment_reachable (const_tree, bool); static tree spu_builtin_vec_perm (tree, tree *); static int spu_sms_res_mii (struct ddg *g); static void asm_file_start (void); +static unsigned int spu_section_type_flags (tree, const char *, int); extern const char *reg_names[]; rtx spu_compare_op0, spu_compare_op1; @@ -329,6 +330,9 @@ const struct attribute_spec spu_attribute_table[]; #undef TARGET_ASM_FILE_START #define TARGET_ASM_FILE_START asm_file_start +#undef TARGET_SECTION_TYPE_FLAGS +#define TARGET_SECTION_TYPE_FLAGS spu_section_type_flags + struct gcc_target targetm = TARGET_INITIALIZER; void @@ -6285,3 +6289,13 @@ asm_file_start (void) default_file_start (); } +/* Implement targetm.section_type_flags. */ +static unsigned int +spu_section_type_flags (tree decl, const char *name, int reloc) +{ + /* .toe needs to have type @nobits. */ + if (strcmp (name, ".toe") == 0) + return SECTION_BSS; + return default_section_type_flags (decl, name, reloc); +} +