diff options
-rw-r--r-- | gcc/ChangeLog | 35 | ||||
-rw-r--r-- | gcc/config/alpha/elf.h | 42 |
2 files changed, 47 insertions, 30 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 689f70b..6e41853 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2010-04-28 Uros Bizjak <ubizjak@gmail.com> + + * config/alpha/elf.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object + type if available. + 2010-04-28 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> PR target/22224 @@ -144,8 +149,7 @@ * config/i386/mingw-w64.h (SUB_LINK_ENTRY): New macro. (SUB_LINK_ENTRY32): New. (SUB_LINK_ENTRY64): New. - (LINK_SPEC): Replace entry point spec by - SUB_LINK_ENTRY. + (LINK_SPEC): Replace entry point spec by SUB_LINK_ENTRY. * config/i386/mingw32 (SUB_LINK_ENTRY32): New. (SUB_LINK_ENTRY64): New. (SUB_LINK_ENTRY): New. @@ -225,7 +229,7 @@ (estimate_num_insns): Special case more builtins. 2010-04-27 Shujing Zhao <pearly.zhao@oracle.com> - + PR c/32207 * c-typeck.c (build_binary_op): Move forward check for comparison pointer with null pointer constant and adjust the diagnostic message. @@ -375,25 +379,22 @@ 2010-04-26 Ira Rosen <irar@il.ibm.com> - * tree-vectorizer.h (struct _stmt_vec_info): Add new field to - determine if the statement is vectorizable, and a macro to - access it. - * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): - Skip statements that can't be vectorized. If the analysis - fails, mark the statement as unvectorizable if vectorizing - basic block. + * tree-vectorizer.h (struct _stmt_vec_info): Add new field to + determine if the statement is vectorizable, and a macro to access it. + * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): + Skip statements that can't be vectorized. If the analysis fails, + mark the statement as unvectorizable if vectorizing basic block. (vect_compute_data_refs_alignment): Likewise. - (vect_verify_datarefs_alignment): Skip statements marked as + (vect_verify_datarefs_alignment): Skip statements marked as unvectorizable. Add print. - (vect_analyze_group_access): Skip statements that can't be - vectorized. If the analysis fails, mark the statement as + (vect_analyze_group_access): Skip statements that can't be + vectorized. If the analysis fails, mark the statement as unvectorizable if vectorizing basic block. - (vect_analyze_data_ref_accesses, vect_analyze_data_refs): - Likewise. - * tree-vect-stmts.c (vectorizable_store): Fix the number of + (vect_analyze_data_ref_accesses, vect_analyze_data_refs): Likewise. + * tree-vect-stmts.c (vectorizable_store): Fix the number of generated stmts for SLP. (new_stmt_vec_info): Initialize the new field. - * tree-vect-slp.c (vect_build_slp_tree): Fail to vectorize + * tree-vect-slp.c (vect_build_slp_tree): Fail to vectorize statements marked as unvectorizable. 2010-04-25 Joseph Myers <joseph@codesourcery.com> diff --git a/gcc/config/alpha/elf.h b/gcc/config/alpha/elf.h index 24ab5f6..d2bf732 100644 --- a/gcc/config/alpha/elf.h +++ b/gcc/config/alpha/elf.h @@ -272,20 +272,36 @@ do { \ /* Write the extra assembler code needed to declare an object properly. */ +#ifdef HAVE_GAS_GNU_UNIQUE_OBJECT +#define USE_GNU_UNIQUE_OBJECT 1 +#else +#define USE_GNU_UNIQUE_OBJECT 0 +#endif + #undef ASM_DECLARE_OBJECT_NAME -#define ASM_DECLARE_OBJECT_NAME(FILE, NAME, DECL) \ - do { \ - HOST_WIDE_INT size; \ - ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object"); \ - size_directive_output = 0; \ - if (!flag_inhibit_size_directive \ - && DECL_SIZE (DECL) \ - && (size = int_size_in_bytes (TREE_TYPE (DECL))) > 0) \ - { \ - size_directive_output = 1; \ - ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, size); \ - } \ - ASM_OUTPUT_LABEL(FILE, NAME); \ +#define ASM_DECLARE_OBJECT_NAME(FILE, NAME, DECL) \ + do { \ + HOST_WIDE_INT size; \ + \ + /* For template static data member instantiations or \ + inline fn local statics, use gnu_unique_object so that \ + they will be combined even under RTLD_LOCAL. */ \ + if (USE_GNU_UNIQUE_OBJECT \ + && !DECL_ARTIFICIAL (DECL) && DECL_ONE_ONLY (DECL)) \ + ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "gnu_unique_object"); \ + else \ + ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object"); \ + \ + size_directive_output = 0; \ + if (!flag_inhibit_size_directive \ + && (DECL) && DECL_SIZE (DECL)) \ + { \ + size_directive_output = 1; \ + size = int_size_in_bytes (TREE_TYPE (DECL)); \ + ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, size); \ + } \ + \ + ASM_OUTPUT_LABEL (FILE, NAME); \ } while (0) /* Output the size directive for a decl in rest_of_decl_compilation |