Skip to content

Commit a77829c

Browse files
committed
Rip out EmittedDeferredDecls; decls are now kept in DeferredDecls.
This partially reverts e522ed4, 2f9604c, e848d13.
1 parent 862b499 commit a77829c

File tree

3 files changed

+7
-33
lines changed

3 files changed

+7
-33
lines changed

interpreter/llvm/src/tools/clang/lib/CodeGen/CodeGenModule.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1970,7 +1970,6 @@ CodeGenModule::GetOrCreateLLVMFunction(StringRef MangledName,
19701970
// DeferredDeclsToEmit list, and remove it from DeferredDecls (since we
19711971
// don't need it anymore).
19721972
addDeferredDeclToEmit(F, DDI->second);
1973-
EmittedDeferredDecls[F] = std::make_pair(DDI->first, DDI->second);
19741973
//DeferredDecls.erase(DDI);
19751974

19761975
// Otherwise, there are cases we have to worry about where we're
@@ -2168,7 +2167,6 @@ CodeGenModule::GetOrCreateLLVMGlobal(StringRef MangledName,
21682167
// Move the potentially referenced deferred decl to the DeferredDeclsToEmit
21692168
// list, and remove it from DeferredDecls (since we don't need it anymore).
21702169
addDeferredDeclToEmit(GV, DDI->second);
2171-
EmittedDeferredDecls[GV] = std::make_pair(DDI->first, DDI->second);
21722170
//DeferredDecls.erase(DDI);
21732171
}
21742172

interpreter/llvm/src/tools/clang/lib/CodeGen/CodeGenModule.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -322,14 +322,6 @@ class CodeGenModule : public CodeGenTypeCache {
322322
DeferredDeclsToEmit.emplace_back(GV, GD);
323323
}
324324

325-
/// Enables unloading of emitted symbols that need to become deferred.
326-
/// Key is the emitted definition, value is symbol name + Decl created
327-
/// while marking this deferred, i.e. the content of DeferredDecls.
328-
std::unordered_map<llvm::GlobalValue*,
329-
std::pair<llvm::StringRef, GlobalDecl>>
330-
EmittedDeferredDecls;
331-
332-
333325
/// List of alias we have emitted. Used to make sure that what they point to
334326
/// is defined once we get to the end of the of the translation unit.
335327
std::vector<GlobalDecl> Aliases;

interpreter/llvm/src/tools/clang/lib/CodeGen/ModuleBuilder.cpp

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,6 @@ namespace clang {
151151
&& "Newly created module should not have weakRefRefs");
152152
Builder->WeakRefReferences.swap(OldBuilder->WeakRefReferences);
153153

154-
Builder->EmittedDeferredDecls.swap(OldBuilder->EmittedDeferredDecls);
155-
156154
return M.get();
157155
}
158156

@@ -287,27 +285,13 @@ namespace clang {
287285
}
288286
}
289287

290-
if (GV->isWeakForLinker()) {
291-
if (!GV->isDeclaration()) {
292-
// This is a definition. If if was emitted as deferred, move it
293-
// back into deferred state.
294-
auto IEmittedDeferredDecl
295-
= Builder->EmittedDeferredDecls.find(GV);
296-
if (IEmittedDeferredDecl != Builder->EmittedDeferredDecls.end()) {
297-
// Use the name of the original GV, not that of our definition
298-
// that's soon to be erased.
299-
Builder->DeferredDecls[IEmittedDeferredDecl->second.first]
300-
= IEmittedDeferredDecl->second.second;
301-
Builder->EmittedDeferredDecls.erase(IEmittedDeferredDecl);
302-
}
303-
} else {
304-
// might be an entry in the deferred decls, if so: remove!
305-
auto IDeferredDecl = Builder->DeferredDecls.find(GV->getName());
306-
if (IDeferredDecl != Builder->DeferredDecls.end()) {
307-
// yes, pointer comparison.
308-
if (IDeferredDecl->first.data() == GV->getName().data())
309-
Builder->DeferredDecls.erase(IDeferredDecl);
310-
}
288+
if (GV->isWeakForLinker() && GV->isDeclaration()) {
289+
// might be an entry in the deferred decls, if so: remove!
290+
auto IDeferredDecl = Builder->DeferredDecls.find(GV->getName());
291+
if (IDeferredDecl != Builder->DeferredDecls.end()) {
292+
// yes, pointer comparison.
293+
if (IDeferredDecl->first.data() == GV->getName().data())
294+
Builder->DeferredDecls.erase(IDeferredDecl);
311295
}
312296
}
313297
}

0 commit comments

Comments
 (0)