[modules] Actually allocate the extra space we use for the tail-allocated array
authorRichard Smith <richard-llvm@metafoo.co.uk>
Thu, 23 Apr 2015 04:13:52 +0000 (04:13 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Thu, 23 Apr 2015 04:13:52 +0000 (04:13 +0000)
in this class.

llvm-svn: 235570

clang/lib/Lex/MacroInfo.cpp

index 0469483..55e0049 100644 (file)
@@ -237,7 +237,9 @@ void MacroDirective::dump() const {
 
 ModuleMacro *ModuleMacro::create(Preprocessor &PP, unsigned OwningModuleID,
                                  IdentifierInfo *II, MacroInfo *Macro,
-                                 ArrayRef<ModuleMacro*> Overrides) {
-  return new (PP.getPreprocessorAllocator())
-      ModuleMacro(OwningModuleID, II, Macro, Overrides);
+                                 ArrayRef<ModuleMacro *> Overrides) {
+  void *Mem = PP.getPreprocessorAllocator().Allocate(
+      sizeof(ModuleMacro) + sizeof(ModuleMacro *) * Overrides.size(),
+      llvm::alignOf<ModuleMacro>());
+  return new (Mem) ModuleMacro(OwningModuleID, II, Macro, Overrides);
 }