aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSandra Loosemore <sandra@codesourcery.com>2015-10-06 17:10:15 -0400
committerSandra Loosemore <sandra@gcc.gnu.org>2015-10-06 17:10:15 -0400
commitce9f2dc532f64c01d284ac34ff3ed8f8f49220c5 (patch)
tree2d39f671df850153d70c4b9f030b56baf954f9c7
parent64e9a944fbc4f57fb5be5e57da8ae99bb215fe12 (diff)
downloadgcc-ce9f2dc532f64c01d284ac34ff3ed8f8f49220c5.zip
gcc-ce9f2dc532f64c01d284ac34ff3ed8f8f49220c5.tar.gz
gcc-ce9f2dc532f64c01d284ac34ff3ed8f8f49220c5.tar.bz2
nios2.c (nios2_symbol_ref_in_small_data_p): For -mgpopt=local, also exclude unintialized common symbols.
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
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/nios2/nios2.c10
-rw-r--r--gcc/doc/invoke.texi5
3 files changed, 16 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index def6e02..736ad4b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/nios2/nios2.c b/gcc/config/nios2/nios2.c
index 76bc85d..fef4d1a 100644
--- a/gcc/config/nios2/nios2.c
+++ b/gcc/config/nios2/nios2.c
@@ -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
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 0d8d7a5..0121832 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -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.