diff options
author | Sandra Loosemore <sandra@codesourcery.com> | 2015-10-06 17:10:15 -0400 |
---|---|---|
committer | Sandra Loosemore <sandra@gcc.gnu.org> | 2015-10-06 17:10:15 -0400 |
commit | ce9f2dc532f64c01d284ac34ff3ed8f8f49220c5 (patch) | |
tree | 2d39f671df850153d70c4b9f030b56baf954f9c7 | |
parent | 64e9a944fbc4f57fb5be5e57da8ae99bb215fe12 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/nios2/nios2.c | 10 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 5 |
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. |