[PATCH] D7895: Anonymous namespaces are missing import DW_TAG_imported_module.

Robinson, Paul via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 18 10:43:26 PDT 2015


The as-if suggests that an explicit artificial import is an entirely appropriate, natural and good way to handle it, because it models the language behavior exactly without *requiring* additional smarts on the debugger side.
Not all as-if statements have to be modeled directly in the DWARF, because they aren't relevant to DWARF or DWARF has other ways of achieving the same effect.  For example, [namespace.udir]/2 says a using-directive means "the names appear as if they were declared in the nearest enclosing namespace…" but there's no reason to generate piles of declarations in the outer namespace because, we have DW_TAG_imported_module which means exactly that.
I don't see any good reason for artificial namespaces to be treated specially just because the namespace is anonymous and the 'using' directive isn't explicit in the source.
--paulr

From: David Blaikie [mailto:dblaikie at gmail.com]
Sent: Tuesday, August 18, 2015 10:27 AM
To: Robinson, Paul
Cc: reviews+D7895+public+7827be49c0b04087 at reviews.llvm.org; Romanova, Katya; Eric Christopher; Frédéric Riss; Duncan P. N. Exon Smith; llvm-commits
Subject: Re: [PATCH] D7895: Anonymous namespaces are missing import DW_TAG_imported_module.



On Tue, Aug 18, 2015 at 10:23 AM, Robinson, Paul <Paul_Robinson at playstation.sony.com<mailto:Paul_Robinson at playstation.sony.com>> wrote:
| suggests that DW_TAG_imported_module could be used for C++ using directives (of which there are none in the source code in question).

[namespace.unnamed]/1 says there is an implicit (as-if) using directive.

Lots of things are as-if, doesn't mean we model them in the DWARF that way, it's just an easy way of defining the behavior in terms of other stuff that's already defined in the standard. Generally we try to model things like the actual source where possible, it seems/usually sounds like/etc.

--paulr

From: David Blaikie [mailto:dblaikie at gmail.com<mailto:dblaikie at gmail.com>]
Sent: Tuesday, August 18, 2015 10:15 AM

To: Robinson, Paul
Cc: reviews+D7895+public+7827be49c0b04087 at reviews.llvm.org<mailto:reviews%2BD7895%2Bpublic%2B7827be49c0b04087 at reviews.llvm.org>; Romanova, Katya; Eric Christopher; Frédéric Riss; Duncan P. N. Exon Smith; llvm-commits
Subject: Re: [PATCH] D7895: Anonymous namespaces are missing import DW_TAG_imported_module.

All I'm saying is that I think this is a fine thing to have as a debugger-specific tuning for your debugger.

DWARF-the-standard is language neutral, yes, so it provides features that can be used to describe many different languages. It describes (non-normatively) possible uses of DWARF features for language features, and suggests that DW_TAG_imported_module could be used for C++ using directives (of which there are none in the source code in question). It doesn't suggest anywhere that it should, let alone must, be used to explicitly describe name lookup rules (or we'd need those using directives in nested scopes for all outer scopes, for example).

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150818/699e393d/attachment.html>


More information about the llvm-commits mailing list