------- Comment #3 from drow at gcc dot gnu dot org 2006-07-23 16:44 -------
Subject: Re: [4.0/4.1/4.2 Regression] g++ emits bogus namespace DIE
On Sun, Jul 23, 2006 at 03:59:58PM -0000, mark at codesourcery dot com wrote:
> If we're setting TYPE_CONTEXT to global_namespace, I think that's a C++
> front end bug. Which type is getting set up like that?
I was wrong; TYPE_CONTEXT looks OK. How about for DECLs?
Compile "int var;" with cc1plus -g, and set a breakpoint on
gen_namespace_die. Up a couple of frames, you'll see:
#6 0x00000000008599ad in gen_decl_die (decl=0x2aaaab17b370,
context_die=0x2aaaab176ea0)
at /space/fsf/commit/gcc/gcc/dwarf2out.c:13117
13117 declare_in_namespace (decl, context_die);
(gdb) call debug_tree (decl)
<var_decl 0x2aaaab17b370 var
type <integer_type 0x2aaaab0014d0 int asm_written public SI
size <integer_cst 0x2aaaaafeeba0 constant invariant 32>
unit size <integer_cst 0x2aaaaafee6c0 constant invariant 4>
align 32 symtab 0 alias set -1 precision 32 min <integer_cst
0x2aaaaafeeb10 -2147483648> max <integer_cst 0x2aaaaafeeb40 2147483647>
pointer_to_this <pointer_type 0x2aaaab013790>>
asm_written public static tree_1 SI file /space/fsf/namespace.cc line 1
size <integer_cst 0x2aaaaafeeba0 32> unit size <integer_cst 0x2aaaaafee6c0 4>
align 32 context <namespace_decl 0x2aaaab00f000 ::>
(mem/c/i:SI (symbol_ref:DI ("var") [flags 0x2] <var_decl 0x2aaaab17b370
var>) [0 var+0 S4 A32]) chain <function_decl 0x2aaaab118d20
__cxa_call_unexpected>>
(gdb) call debug_tree (decl.decl_minimal.context)
<namespace_decl 0x2aaaab00f000 :: public VOID file <built-in> line 0
align 1
>
So, the variable is in the global namespace explicitly.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28460