nios2.c (nios2_symbol_ref_in_small_data_p): For -mgpopt=local, also exclude unintiali...
authorSandra Loosemore <sandra@codesourcery.com>
Tue, 6 Oct 2015 21:10:15 +0000 (17:10 -0400)
committerSandra Loosemore <sandra@gcc.gnu.org>
Tue, 6 Oct 2015 21:10:15 +0000 (17:10 -0400)
2015-10-06  Sandra Loosemore  <sandra@codesourcery.com>

gcc/
* config/nios2/nios2.c (nios2_symbol_ref_in_small_data_p):
For -mgpopt=local, also exclude unintialized common symbols.
* doc/invoke.texi (Nios II Options): Document the change.

From-SVN: r228549

gcc/ChangeLog
gcc/config/nios2/nios2.c
gcc/doc/invoke.texi

index def6e02fbef103d3e053e0a2fc3240f8fc6af188..736ad4b4d5157368f1b751d2771840a88a774df8 100644 (file)
@@ -1,3 +1,9 @@
+2015-10-06  Sandra Loosemore  <sandra@codesourcery.com>
+
+       * config/nios2/nios2.c (nios2_symbol_ref_in_small_data_p):
+       For -mgpopt=local, also exclude unintialized common symbols.
+       * doc/invoke.texi (Nios II Options): Document the change.
+
 2015-10-07  Kugan Vivekanandarajah  <kuganv@linaro.org>
 
        * config/aarch64/iterators.md (vwcore): Add missing cases for
index 76bc85dcc7a18fb2489f419fb8216d41c2bf2118..fef4d1a027a842d401cb74e314e3759d74bf1f07 100644 (file)
@@ -2099,13 +2099,17 @@ nios2_symbol_ref_in_small_data_p (rtx sym)
 
     case gpopt_local:
       /* Use GP-relative addressing for small data symbols that are
-        not external or weak, plus any symbols that have explicitly
-        been placed in a small data section.  */
+        not external or weak or uninitialized common, plus any symbols
+        that have explicitly been placed in a small data section.  */
       if (decl && DECL_SECTION_NAME (decl))
        return nios2_small_section_name_p (DECL_SECTION_NAME (decl));
       return (SYMBOL_REF_SMALL_P (sym)
              && !SYMBOL_REF_EXTERNAL_P (sym)
-             && !(decl && DECL_WEAK (decl)));
+             && !(decl && DECL_WEAK (decl))
+             && !(decl && DECL_COMMON (decl)
+                  && (DECL_INITIAL (decl) == NULL
+                      || (!in_lto_p
+                          && DECL_INITIAL (decl) == error_mark_node))));
 
     case gpopt_global:
       /* Use GP-relative addressing for small data symbols, even if
index 0d8d7a5eb570e9fa681fe7c1c92c27be634c99b8..0121832ada1a9ae160665d4ed5b3172396881d99 100644 (file)
@@ -18535,13 +18535,14 @@ Do not generate GP-relative accesses.
 
 @item local
 Generate GP-relative accesses for small data objects that are not 
-external or weak.  Also use GP-relative addressing for objects that
+external, weak, or uninitialized common symbols.  
+Also use GP-relative addressing for objects that
 have been explicitly placed in a small data section via a @code{section}
 attribute.
 
 @item global
 As for @samp{local}, but also generate GP-relative accesses for
-small data objects that are external or weak.  If you use this option,
+small data objects that are external, weak, or common.  If you use this option,
 you must ensure that all parts of your program (including libraries) are
 compiled with the same @option{-G} setting.