summaryrefslogtreecommitdiffstats
path: root/clang/lib/Serialization
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2015-04-22 02:09:43 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2015-04-22 02:09:43 +0000
commit5dbef929323a180a8e56c34c473238835c500c79 (patch)
tree863f3443d2766c4ef24140adcaedd20195636158 /clang/lib/Serialization
parentf8344c60a69bfd9388bf0a5bdd13f504c6b7b53e (diff)
downloadbcm5719-llvm-5dbef929323a180a8e56c34c473238835c500c79.tar.gz
bcm5719-llvm-5dbef929323a180a8e56c34c473238835c500c79.zip
[modules] Cope with partial module macro information, fix memory leak found by buildbot.
llvm-svn: 235464
Diffstat (limited to 'clang/lib/Serialization')
-rw-r--r--clang/lib/Serialization/ASTReader.cpp10
1 files changed, 4 insertions, 6 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp
index 0e45a2f6fa7..1ea30f95977 100644
--- a/clang/lib/Serialization/ASTReader.cpp
+++ b/clang/lib/Serialization/ASTReader.cpp
@@ -1804,19 +1804,17 @@ void ASTReader::resolvePendingMacro(IdentifierInfo *II,
// Module macros are listed in reverse dependency order.
{
std::reverse(ModuleMacros.begin(), ModuleMacros.end());
- llvm::SmallDenseMap<unsigned, ModuleMacro*> Macros;
llvm::SmallVector<ModuleMacro*, 8> Overrides;
for (auto &MMI : ModuleMacros) {
Overrides.clear();
for (unsigned ModID : MMI.Overrides) {
- auto *Macro = Macros.lookup(ModID);
+ auto *Macro = PP.getModuleMacro(ModID, II);
assert(Macro && "missing definition for overridden macro");
- Overrides.push_back(Macros.lookup(ModID));
+ Overrides.push_back(Macro);
}
bool Inserted = false;
- Macros[MMI.SubModID] =
- PP.addModuleMacro(MMI.SubModID, II, MMI.MI, Overrides, Inserted);
+ PP.addModuleMacro(MMI.SubModID, II, MMI.MI, Overrides, Inserted);
if (!Inserted)
continue;
@@ -1825,7 +1823,7 @@ void ASTReader::resolvePendingMacro(IdentifierInfo *II,
// Macros in the owning module are hidden. Just remember this macro to
// install if we make this module visible.
HiddenNamesMap[Owner].HiddenMacros.insert(
- std::make_pair(II, new ModuleMacroInfo(MMI)));
+ std::make_pair(II, new (Context) ModuleMacroInfo(MMI)));
} else {
installImportedMacro(II, MMI, Owner);
}
OpenPOWER on IntegriCloud