https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89347
Maninder Singh <maninder1.s at samsung dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |maninder1.s at samsung dot com --- Comment #1 from Maninder Singh <maninder1.s at samsung dot com> --- Fixing [#89347] gc-sections doesn't remove unused bss section variables. gc-section works well only for bss section if global variables initialised with 0 explicitly and not with uninitalised one. Reason is -fdata-sections does not make separate section for bss symbols which are not initialised with 0 explicitly. due to which gc-section does not remove bss symbols which are not getting used in binary. Signed-off-by: Vaneet Narang <v.nar...@samsung.com> Signed-off-by: Maninder Singh <maninder...@samsung.com> --- gcc/varasm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/varasm.c b/gcc/varasm.c index 0be44f1..1f68c3a 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -1164,7 +1164,7 @@ get_variable_section (tree decl, bool prefer_noswitch_p) && ADDR_SPACE_GENERIC_P (as)); if (DECL_THREAD_LOCAL_P (decl)) return tls_comm_section; - else if (TREE_PUBLIC (decl) && bss_initializer_p (decl)) + else if (TREE_PUBLIC (decl) && bss_initializer_p (decl) && !flag_data_sections) return comm_section; } -- 1.9.1