aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorGeorg-Johann Lay <avr@gjlay.de>2012-02-22 14:13:48 +0000
committerGeorg-Johann Lay <gjl@gcc.gnu.org>2012-02-22 14:13:48 +0000
commit219db888b5adc949d931397a3fdabdfbd6fbfc62 (patch)
tree7079b1bdd77223f651aadcd799c66fb3bcbd4263 /gcc
parent9aa04cc733440f0b9d1511d0453e38351546141b (diff)
downloadgcc-219db888b5adc949d931397a3fdabdfbd6fbfc62.zip
gcc-219db888b5adc949d931397a3fdabdfbd6fbfc62.tar.gz
gcc-219db888b5adc949d931397a3fdabdfbd6fbfc62.tar.bz2
re PR target/18145 (Do not emit __do_copy_data or __do_clear_bss if .data or .bss is empty.)
PR target/18145 * config/avr/avr.c (avr_asm_output_aligned_decl_common): Skip setting avr_need_clear_bss_p for __gnu_lto* symbols. From-SVN: r184481
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/avr/avr.c6
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 295ce0e..70b924b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2012-02-22 Georg-Johann Lay <avr@gjlay.de>
+ PR target/18145
+ * config/avr/avr.c (avr_asm_output_aligned_decl_common): Skip
+ setting avr_need_clear_bss_p for __gnu_lto* symbols.
+
+2012-02-22 Georg-Johann Lay <avr@gjlay.de>
+
* config/avr/avr.h (avr_accumulate_outgoing_args): Return int.
* config/avr/avr.c (avr_accumulate_outgoing_args): Return int.
diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c
index 9a285e3..d4cfaef 100644
--- a/gcc/config/avr/avr.c
+++ b/gcc/config/avr/avr.c
@@ -7245,7 +7245,11 @@ avr_asm_output_aligned_decl_common (FILE * stream,
unsigned HOST_WIDE_INT size,
unsigned int align, bool local_p)
{
- avr_need_clear_bss_p = true;
+ /* __gnu_lto_v1 etc. are just markers for the linker injected by toplev.c.
+ There is no need to trigger __do_clear_bss code for them. */
+
+ if (!STR_PREFIX_P (name, "__gnu_lto"))
+ avr_need_clear_bss_p = true;
if (local_p)
ASM_OUTPUT_ALIGNED_LOCAL (stream, name, size, align);