From: Jakub Jelinek Date: Thu, 8 Dec 2011 13:39:34 +0000 (+0100) Subject: backport: re PR debug/51410 (duplicate variable DIE) X-Git-Tag: releases/gcc-4.6.3~286 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7c280192b228b253fc4efd4fd59e1bae349015f0;p=thirdparty%2Fgcc.git backport: re PR debug/51410 (duplicate variable DIE) Backport from mainline 2011-12-05 Jakub Jelinek PR debug/51410 * c-decl.c (pop_scope): Don't add DECL_EXTERNAL decls for debug info if scope is file_scope. * gcc.dg/debug/dwarf2/pr51410.c: New test. From-SVN: r182114 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 898e61f1a0e5..fdb878f9c5f6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -3,6 +3,10 @@ Backport from mainline 2011-12-05 Jakub Jelinek + PR debug/51410 + * c-decl.c (pop_scope): Don't add DECL_EXTERNAL decls + for debug info if scope is file_scope. + PR c/51339 * c-decl.c (c_finish_incomplete_decl, finish_decl): Call relayout_decl instead of layout_decl. diff --git a/gcc/c-decl.c b/gcc/c-decl.c index f0becb9889cc..0335cda55982 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -1200,7 +1200,7 @@ pop_scope (void) DECL_CHAIN (p) = BLOCK_VARS (block); BLOCK_VARS (block) = p; } - else if (VAR_OR_FUNCTION_DECL_P (p)) + else if (VAR_OR_FUNCTION_DECL_P (p) && scope != file_scope) { /* For block local externs add a special DECL_EXTERNAL decl for debug info generation. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 81c29861e48d..6d21fb1c4f90 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -3,6 +3,9 @@ Backport from mainline 2011-12-05 Jakub Jelinek + PR debug/51410 + * gcc.dg/debug/dwarf2/pr51410.c: New test. + PR c/51339 * gcc.dg/gomp/pr51339.c: New test. diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/pr51410.c b/gcc/testsuite/gcc.dg/debug/dwarf2/pr51410.c new file mode 100644 index 000000000000..957c152b4a09 --- /dev/null +++ b/gcc/testsuite/gcc.dg/debug/dwarf2/pr51410.c @@ -0,0 +1,13 @@ +/* PR debug/51410 */ +/* { dg-do compile } */ +/* { dg-options "-O0 -gdwarf-2 -dA -fno-merge-debug-strings" } */ + +int x; + +int +foo (void) +{ + return x; +} + +/* { dg-final { scan-assembler-times "\\(DIE\[^\\r\\n\]*DW_TAG_variable\\)" 1 } } */