dwarf2out.c (declare_in_namespace): Only emit external declarations in the local scope once.
* dwarf2out.c (declare_in_namespace): Only emit external declarations in the local scope once. From-SVN: r216683
This commit is contained in:
parent
fbee6d3164
commit
c22354fd69
@ -1,3 +1,8 @@
|
||||
2014-10-24 Aldy Hernandez <aldyh@redhat.com>
|
||||
|
||||
* dwarf2out.c (declare_in_namespace): Only emit external
|
||||
declarations in the local scope once.
|
||||
|
||||
2014-10-24 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
* ginclude/stdbool.h: Do not define bool, true or false in C++11.
|
||||
|
@ -20476,6 +20476,26 @@ declare_in_namespace (tree thing, dw_die_ref context_die)
|
||||
if (debug_info_level <= DINFO_LEVEL_TERSE)
|
||||
return context_die;
|
||||
|
||||
/* External declarations in the local scope only need to be emitted
|
||||
once, not once in the namespace and once in the scope.
|
||||
|
||||
This avoids declaring the `extern' below in the
|
||||
namespace DIE as well as in the innermost scope:
|
||||
|
||||
namespace S
|
||||
{
|
||||
int i=5;
|
||||
int foo()
|
||||
{
|
||||
int i=8;
|
||||
extern int i;
|
||||
return i;
|
||||
}
|
||||
}
|
||||
*/
|
||||
if (DECL_P (thing) && DECL_EXTERNAL (thing) && local_scope_p (context_die))
|
||||
return context_die;
|
||||
|
||||
/* If this decl is from an inlined function, then don't try to emit it in its
|
||||
namespace, as we will get confused. It would have already been emitted
|
||||
when the abstract instance of the inline function was emitted anyways. */
|
||||
|
Loading…
Reference in New Issue
Block a user