r177481 - Make sure that Module::ConfigMacrosExhaustive gets initialized and deserialized correctly.

Douglas Gregor dgregor at apple.com
Tue Mar 19 20:59:18 PDT 2013


Author: dgregor
Date: Tue Mar 19 22:59:18 2013
New Revision: 177481

URL: http://llvm.org/viewvc/llvm-project?rev=177481&view=rev
Log:
Make sure that Module::ConfigMacrosExhaustive gets initialized and deserialized correctly.

This fixes regressions introduced in r177466 that caused several
module tests to fail sporadically.

Modified:
    cfe/trunk/lib/Basic/Module.cpp
    cfe/trunk/lib/Serialization/ASTReader.cpp

Modified: cfe/trunk/lib/Basic/Module.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Module.cpp?rev=177481&r1=177480&r2=177481&view=diff
==============================================================================
--- cfe/trunk/lib/Basic/Module.cpp (original)
+++ cfe/trunk/lib/Basic/Module.cpp Tue Mar 19 22:59:18 2013
@@ -28,7 +28,8 @@ Module::Module(StringRef Name, SourceLoc
     Umbrella(), ASTFile(0), IsAvailable(true), IsFromModuleFile(false),
     IsFramework(IsFramework), IsExplicit(IsExplicit), IsSystem(false),
     InferSubmodules(false), InferExplicitSubmodules(false), 
-    InferExportWildcard(false), NameVisibility(Hidden) 
+    InferExportWildcard(false), ConfigMacrosExhaustive(false),
+    NameVisibility(Hidden)
 { 
   if (Parent) {
     if (!Parent->isAvailable())
@@ -46,7 +47,6 @@ Module::~Module() {
        I != IEnd; ++I) {
     delete *I;
   }
-  
 }
 
 /// \brief Determine whether a translation unit built using the current
@@ -284,12 +284,13 @@ void Module::print(raw_ostream &OS, unsi
     OS.indent(Indent + 2);
     OS << "config_macros ";
     if (ConfigMacrosExhaustive)
-      OS << "[exhausive]";
+      OS << "[exhaustive]";
     for (unsigned I = 0, N = ConfigMacros.size(); I != N; ++I) {
       if (I)
         OS << ", ";
       OS << ConfigMacros[I];
     }
+    OS << "\n";
   }
 
   for (unsigned I = 0, N = Headers.size(); I != N; ++I) {

Modified: cfe/trunk/lib/Serialization/ASTReader.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReader.cpp?rev=177481&r1=177480&r2=177481&view=diff
==============================================================================
--- cfe/trunk/lib/Serialization/ASTReader.cpp (original)
+++ cfe/trunk/lib/Serialization/ASTReader.cpp Tue Mar 19 22:59:18 2013
@@ -3475,7 +3475,7 @@ bool ASTReader::ReadSubmoduleBlock(Modul
         return true;
       }
 
-      if (Record.size() < 7) {
+      if (Record.size() < 8) {
         Error("malformed module definition");
         return true;
       }
@@ -3489,7 +3489,8 @@ bool ASTReader::ReadSubmoduleBlock(Modul
       bool InferSubmodules = Record[5];
       bool InferExplicitSubmodules = Record[6];
       bool InferExportWildcard = Record[7];
-      
+      bool ConfigMacrosExhaustive = Record[8];
+
       Module *ParentModule = 0;
       if (Parent)
         ParentModule = getSubmodule(Parent);
@@ -3527,13 +3528,15 @@ bool ASTReader::ReadSubmoduleBlock(Modul
       CurrentModule->InferSubmodules = InferSubmodules;
       CurrentModule->InferExplicitSubmodules = InferExplicitSubmodules;
       CurrentModule->InferExportWildcard = InferExportWildcard;
+      CurrentModule->ConfigMacrosExhaustive = ConfigMacrosExhaustive;
       if (DeserializationListener)
         DeserializationListener->ModuleRead(GlobalID, CurrentModule);
       
       SubmodulesLoaded[GlobalIndex] = CurrentModule;
 
-      // Clear out link libraries; the module file has them.
+      // Clear out link libraries and config macros; the module file has them.
       CurrentModule->LinkLibraries.clear();
+      CurrentModule->ConfigMacros.clear();
       break;
     }
         





More information about the cfe-commits mailing list