OSDN Git Service

* config/alpha/elf.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 28 Apr 2010 16:56:24 +0000 (16:56 +0000)
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 28 Apr 2010 16:56:24 +0000 (16:56 +0000)
type if available.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158834 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/alpha/elf.h

index 689f70b..6e41853 100644 (file)
@@ -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
        * 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.
        (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.
 
 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>
index 24ab5f6..d2bf732 100644 (file)
@@ -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