diff --git a/lib/Archive/ArchiveReader.cpp b/lib/Archive/ArchiveReader.cpp
index 8d87a67..ff8c9bc 100644
--- a/lib/Archive/ArchiveReader.cpp
+++ b/lib/Archive/ArchiveReader.cpp
@@ -504,19 +504,15 @@
   }
 }
 
-bool
-Archive::isBytecodeArchive()
-{
-  //Make sure the symTab has been loaded...
-  //in most cases this should have been done
-  //when the archive was constructed, but still,
-  //this is just in case.
-  if ( !symTab.size() )
+bool Archive::isBytecodeArchive() {
+  // Make sure the symTab has been loaded. In most cases this should have been
+  // done when the archive was constructed, but still,  this is just in case.
+  if (!symTab.size())
     loadSymbolTable();
 
-  //Now that we know it's been loaded, return true
-  //if it has a size
-  if ( symTab.size() ) return true;
+  // Now that we know it's been loaded, return true
+  // if it has a size
+  if (symTab.size()) return true;
 
   //We still can't be sure it isn't a bytecode archive
   loadArchive();
@@ -524,11 +520,21 @@
   std::vector<Module *> Modules;
   std::string ErrorMessage;
 
-  //If getAllModules gives an error then this isn't a proper
-  //bytecode archive
-  if ( getAllModules( Modules, &ErrorMessage ) ) return false;
-
-  //Finally, if we find any bytecode modules then this is a proper
-  //bytecode archive
-  return Modules.size();
+  // Scan the archive, trying to load a bytecode member.  We only load one to
+  // see if this works.
+  for (iterator I = begin(), E = end(); I != E; ++I) {
+    if (!I->isBytecode() && !I->isCompressedBytecode())
+      continue;
+    
+    std::string FullMemberName = 
+      archPath.toString() + "(" + I->getPath().toString() + ")";
+    Module* M = ParseBytecodeBuffer((const unsigned char*)I->getData(),
+                                    I->getSize(), FullMemberName);
+    if (!M)
+      return false;  // Couldn't parse bytecode, not a bytecode archive.
+    delete M;
+    return true;
+  }
+  
+  return false;
 }
