Don't instantiate GC metadata for declarations.
authorGordon Henriksen <gordonhenriksen@mac.com>
Sun, 17 Aug 2008 16:18:50 +0000 (16:18 +0000)
committerGordon Henriksen <gordonhenriksen@mac.com>
Sun, 17 Aug 2008 16:18:50 +0000 (16:18 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54895 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/GCMetadata.cpp
lib/CodeGen/GCStrategy.cpp

index c02a73b70804f0a98a63c75f499db5342cf85335..0b5c6f0662cf27a45d881bba7c56b72ea6176317 100644 (file)
@@ -99,7 +99,9 @@ getOrCreateCollector(const Module *M, const std::string &Name) {
 }
 
 CollectorMetadata &CollectorModuleMetadata::get(const Function &F) {
+  assert(!F.isDeclaration() && "Can only get GCFunctionInfo for a definition!");
   assert(F.hasCollector());
+  
   function_map_type::iterator I = Map.find(&F);
   if (I != Map.end())
     return *I->second;
index 629a2e13dee4c73a59fdc7d5c2231d93cfbcfb0c..f5cb9ab6312354c3f5acd63639b5abf7fa5f2d26 100644 (file)
@@ -144,7 +144,7 @@ bool LowerIntrinsics::doInitialization(Module &M) {
   CollectorModuleMetadata *CMM = getAnalysisToUpdate<CollectorModuleMetadata>();
   assert(CMM && "LowerIntrinsics didn't require CollectorModuleMetadata!?");
   for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I)
-    if (I->hasCollector())
+    if (!I->isDeclaration() && I->hasCollector())
       CMM->get(*I); // Instantiate the Collector.
   
   bool MadeChange = false;