diff --git a/lib/Linker/LinkArchives.cpp b/lib/Linker/LinkArchives.cpp
index 416b285..381d0e7 100644
--- a/lib/Linker/LinkArchives.cpp
+++ b/lib/Linker/LinkArchives.cpp
@@ -117,7 +117,7 @@
   if (!arch)
     return error("Cannot read archive '" + Filename.toString() +
                  "': " + ErrMsg);
-  if (!arch->isBytecodeArchive()) {
+  if (!arch->isBitcodeArchive()) {
     is_native = true;
     return false;
   }
diff --git a/lib/Linker/LinkItems.cpp b/lib/Linker/LinkItems.cpp
index 50efe46..e66fa5b 100644
--- a/lib/Linker/LinkItems.cpp
+++ b/lib/Linker/LinkItems.cpp
@@ -7,7 +7,7 @@
 //
 //===----------------------------------------------------------------------===//
 //
-// This file contains routines to handle linking together LLVM bytecode files,
+// This file contains routines to handle linking together LLVM bitcode files,
 // and to handle annoying things like static libraries.
 //
 //===----------------------------------------------------------------------===//
@@ -20,7 +20,7 @@
 // LinkItems - This function is the main entry point into linking. It takes a
 // list of LinkItem which indicates the order the files should be linked and
 // how each file should be treated (plain file or with library search). The
-// function only links bytecode and produces a result list of items that are
+// function only links bitcode and produces a result list of items that are
 // native objects. 
 bool
 Linker::LinkInItems(const ItemList& Items, ItemList& NativeItems) {
@@ -109,7 +109,7 @@
 }
 
 /// LinkLibraries - takes the specified library files and links them into the
-/// main bytecode object file.
+/// main bitcode object file.
 ///
 /// Inputs:
 ///  Libraries  - The list of libraries to link into the module.
@@ -140,11 +140,11 @@
   return false;
 }
 
-/// LinkInFile - opens a bytecode file and links in all objects which
+/// LinkInFile - opens a bitcode file and links in all objects which
 /// provide symbols that are currently undefined.
 ///
 /// Inputs:
-///  File - The pathname of the bytecode file.
+///  File - The pathname of the bitcode file.
 ///
 /// Outputs:
 ///  ErrorMessage - A C++ string detailing what error occurred, if any.
@@ -179,7 +179,7 @@
     case sys::Bitcode_FileType:
     case sys::Bytecode_FileType:
     case sys::CompressedBytecode_FileType: {
-      verbose("Linking bytecode file '" + File.toString() + "'");
+      verbose("Linking bitcode file '" + File.toString() + "'");
       std::auto_ptr<Module> M(LoadObject(File));
       if (M.get() == 0)
         return error("Cannot load file '" + File.toString() + "'" + Error);
@@ -208,9 +208,9 @@
 /// or relative pathname, or as a file somewhere in LLVM_LIB_SEARCH_PATH.
 ///
 /// Inputs:
-///  Files      - A vector of sys::Path indicating the LLVM bytecode filenames
+///  Files      - A vector of sys::Path indicating the LLVM bitcode filenames
 ///               to be linked.  The names can refer to a mixture of pure LLVM
-///               bytecode files and archive (ar) formatted files.
+///               bitcode files and archive (ar) formatted files.
 ///
 /// Return value:
 ///  FALSE - No errors.
diff --git a/lib/Linker/Linker.cpp b/lib/Linker/Linker.cpp
index 077bcd7..4604305 100644
--- a/lib/Linker/Linker.cpp
+++ b/lib/Linker/Linker.cpp
@@ -80,7 +80,7 @@
 
 void
 Linker::addSystemPaths() {
-  sys::Path::GetBytecodeLibraryPaths(LibPaths);
+  sys::Path::GetBitcodeLibraryPaths(LibPaths);
   LibPaths.insert(LibPaths.begin(),sys::Path("./"));
 }
 
@@ -94,7 +94,7 @@
   return result;
 }
 
-// LoadObject - Read in and parse the bytecode file named by FN and return the
+// LoadObject - Read in and parse the bitcode file named by FN and return the
 // module it contains (wrapped in an auto_ptr), or auto_ptr<Module>() and set
 // Error if an error occurs.
 std::auto_ptr<Module>
@@ -112,7 +112,7 @@
     
   if (Result)
     return std::auto_ptr<Module>(Result);
-  Error = "Bytecode file '" + FN.toString() + "' could not be loaded";
+  Error = "Bitcode file '" + FN.toString() + "' could not be loaded";
   if (ParseErrorMessage.size())
     Error += ": " + ParseErrorMessage;
   return std::auto_ptr<Module>();
