Fix for PR debug/43325
gcc/ChangeLog:
PR debug/43325
* dwarf2out.c (gen_variable_die): Allow debug info for variable
re-declaration when it happens in a function.
gcc/testsuite/ChangeLog:
PR debug/43325
* c-c++-common/dwarf2/redeclaration-1.C: New test.
From-SVN: r157928
+2010-04-01 Dodji Seketeli <dodji@redhat.com>
+
+ PR debug/43325
+ * dwarf2out.c (gen_variable_die): Allow debug info for variable
+ re-declaration when it happens in a function.
+
2010-04-01 Aldy Hernandez <aldyh@redhat.com>
* cgraph.c (cgraph_add_function_insertion_hook): Update comment.
/* If the compiler emitted a definition for the DECL declaration
and if we already emitted a DIE for it, don't emit a second
- DIE for it again. */
- if (old_die
- && declaration)
+ DIE for it again. Allow re-declarations of DECLs that are
+ inside functions, though. */
+ if (old_die && declaration && !local_scope_p (context_die))
return;
/* For static data members, the declaration in the class is supposed
+2010-04-01 Dodji Seketeli <dodji@redhat.com>
+
+ PR debug/43325
+ * c-c++-common/dwarf2/redeclaration-1.C: New test.
+
2010-04-01 Jason Merrill <jason@redhat.com>
* g++.dg/cpp0x/initlist12.C: Adjust expected errors.
--- /dev/null
+// Origin: PR debug/43325
+// { dg-options "-g -dA" }
+// { dg-do compile }
+
+// { dg-final { scan-assembler-times "\[^\n\r\]*\\(DIE \[^\n\r\]*DW_TAG_lexical_block\\)\[\n\r\]{1,2}\[^\n\r\]*DW_AT_low_pc\[\n\r\]{1,2}\[^\n\r\]*DW_AT_high_pc\[\n\r\]{1,2}\[^\n\r\]*\\(DIE \[^\n\r\]*DW_TAG_variable\\)\[\n\r\]{1,2}\[^\n\r\]*DW_AT_name" 2 } }
+
+namespace S
+{
+ int
+ f()
+ {
+ int i = 42;
+ {
+ extern int i;
+ return i;
+ }
+ }
+}