forked from OSchip/llvm-project
Add LangOptions method to query whether we are tracking the owning module for a local declaration.
In preparation for expanding this behavior to cover additional cases. llvm-svn: 302969
This commit is contained in:
parent
66bdfca77a
commit
3533397a3a
|
@ -166,6 +166,11 @@ public:
|
|||
return getCompilingModule() != CMK_None;
|
||||
}
|
||||
|
||||
/// Do we need to track the owning module for a local declaration?
|
||||
bool trackLocalOwningModule() const {
|
||||
return ModulesLocalVisibility;
|
||||
}
|
||||
|
||||
bool isSignedOverflowDefined() const {
|
||||
return getSignedOverflowBehavior() == SOB_Defined;
|
||||
}
|
||||
|
|
|
@ -75,7 +75,7 @@ void *Decl::operator new(std::size_t Size, const ASTContext &Ctx,
|
|||
assert(!Parent || &Parent->getParentASTContext() == &Ctx);
|
||||
// With local visibility enabled, we track the owning module even for local
|
||||
// declarations.
|
||||
if (Ctx.getLangOpts().ModulesLocalVisibility) {
|
||||
if (Ctx.getLangOpts().trackLocalOwningModule()) {
|
||||
// Ensure required alignment of the resulting object by adding extra
|
||||
// padding at the start if required.
|
||||
size_t ExtraAlign =
|
||||
|
@ -96,7 +96,7 @@ Module *Decl::getOwningModuleSlow() const {
|
|||
}
|
||||
|
||||
bool Decl::hasLocalOwningModuleStorage() const {
|
||||
return getASTContext().getLangOpts().ModulesLocalVisibility;
|
||||
return getASTContext().getLangOpts().trackLocalOwningModule();
|
||||
}
|
||||
|
||||
const char *Decl::getDeclKindName() const {
|
||||
|
|
|
@ -16038,7 +16038,7 @@ void Sema::ActOnModuleBegin(SourceLocation DirectiveLoc, Module *Mod) {
|
|||
// The enclosing context is now part of this module.
|
||||
// FIXME: Consider creating a child DeclContext to hold the entities
|
||||
// lexically within the module.
|
||||
if (getLangOpts().ModulesLocalVisibility) {
|
||||
if (getLangOpts().trackLocalOwningModule()) {
|
||||
cast<Decl>(CurContext)->setHidden(true);
|
||||
cast<Decl>(CurContext)->setLocalOwningModule(Mod);
|
||||
}
|
||||
|
@ -16072,7 +16072,7 @@ void Sema::ActOnModuleEnd(SourceLocation EomLoc, Module *Mod) {
|
|||
BuildModuleInclude(DirectiveLoc, Mod);
|
||||
|
||||
// Any further declarations are in whatever module we returned to.
|
||||
if (getLangOpts().ModulesLocalVisibility) {
|
||||
if (getLangOpts().trackLocalOwningModule()) {
|
||||
cast<Decl>(CurContext)->setLocalOwningModule(getCurrentModule());
|
||||
if (!getCurrentModule())
|
||||
cast<Decl>(CurContext)->setHidden(false);
|
||||
|
|
Loading…
Reference in New Issue