diff --git a/llvm/tools/llvm-ld/llvm-ld.cpp b/llvm/tools/llvm-ld/llvm-ld.cpp
index c86341f..46788b1 100644
--- a/llvm/tools/llvm-ld/llvm-ld.cpp
+++ b/llvm/tools/llvm-ld/llvm-ld.cpp
@@ -11,7 +11,7 @@
 // system 'ld' conventions.  As such, the default output file is ./a.out.
 // Additionally, this program outputs a shell script that is used to invoke LLI
 // to execute the program.  In this manner, the generated executable (a.out for
-// example), is directly executable, whereas the bytecode file actually lives in
+// example), is directly executable, whereas the bitcode file actually lives in
 // the a.out.bc file generated by this program.  Also, Force is on by default.
 //
 // Note that if someone (or a script) deletes the executable program generated,
@@ -42,7 +42,7 @@
 
 // Input/Output Options
 static cl::list<std::string> InputFilenames(cl::Positional, cl::OneOrMore,
-  cl::desc("<input bytecode files>"));
+  cl::desc("<input bitcode files>"));
 
 static cl::opt<std::string> OutputFilename("o", cl::init("a.out"),
   cl::desc("Override output filename"),
@@ -203,11 +203,11 @@
   return;
 }
 
-/// GenerateBytecode - generates a bytecode file from the module provided
-void GenerateBytecode(Module* M, const std::string& FileName) {
+/// GenerateBitcode - generates a bitcode file from the module provided
+void GenerateBitcode(Module* M, const std::string& FileName) {
 
   if (Verbose)
-    cout << "Generating Bytecode To " << FileName << '\n';
+    cout << "Generating Bitcode To " << FileName << '\n';
 
   // Create the output file.
   std::ios::openmode io_mode = std::ios::out | std::ios::trunc |
@@ -216,22 +216,22 @@
   if (!Out.good())
     PrintAndExit("error opening '" + FileName + "' for writing!");
 
-  // Ensure that the bytecode file gets removed from the disk if we get a
+  // Ensure that the bitcode file gets removed from the disk if we get a
   // terminating signal.
   sys::RemoveFileOnSignal(sys::Path(FileName));
 
   // Write it out
   WriteBitcodeToFile(M, Out);
 
-  // Close the bytecode file.
+  // Close the bitcode file.
   Out.close();
 }
 
 /// GenerateAssembly - generates a native assembly language source file from the
-/// specified bytecode file.
+/// specified bitcode file.
 ///
 /// Inputs:
-///  InputFilename  - The name of the input bytecode file.
+///  InputFilename  - The name of the input bitcode file.
 ///  OutputFilename - The name of the file to generate.
 ///  llc            - The pathname to use for LLC.
 ///  envp           - The environment to use when running LLC.
@@ -242,7 +242,7 @@
                             const std::string &InputFilename,
                             const sys::Path &llc,
                             std::string &ErrMsg ) {
-  // Run LLC to convert the bytecode file into assembly code.
+  // Run LLC to convert the bitcode file into assembly code.
   std::vector<const char*> args;
   args.push_back(llc.c_str());
   args.push_back("-f");
@@ -259,12 +259,12 @@
   return sys::Program::ExecuteAndWait(llc, &args[0], 0, 0, 0, 0, &ErrMsg);
 }
 
-/// GenerateCFile - generates a C source file from the specified bytecode file.
+/// GenerateCFile - generates a C source file from the specified bitcode file.
 static int GenerateCFile(const std::string &OutputFile,
                          const std::string &InputFile,
                          const sys::Path &llc,
                          std::string& ErrMsg) {
-  // Run LLC to convert the bytecode file into C.
+  // Run LLC to convert the bitcode file into C.
   std::vector<const char*> args;
   args.push_back(llc.c_str());
   args.push_back("-march=c");
@@ -283,10 +283,10 @@
 }
 
 /// GenerateNative - generates a native object file from the
-/// specified bytecode file.
+/// specified bitcode file.
 ///
 /// Inputs:
-///  InputFilename   - The name of the input bytecode file.
+///  InputFilename   - The name of the input bitcode file.
 ///  OutputFilename  - The name of the file to generate.
 ///  NativeLinkItems - The native libraries, files, code with which to link
 ///  LibPaths        - The list of directories in which to find libraries.
@@ -377,7 +377,7 @@
 }
 
 /// EmitShellScript - Output the wrapper file that invokes the JIT on the LLVM
-/// bytecode file for the program.
+/// bitcode file for the program.
 static void EmitShellScript(char **argv) {
   if (Verbose)
     cout << "Emitting Shell Script\n";
@@ -478,7 +478,7 @@
     // Construct a Linker (now that Verbose is set)
     Linker TheLinker(progname, OutputFilename, Verbose);
 
-    // Keep track of the native link items (versus the bytecode items)
+    // Keep track of the native link items (versus the bitcode items)
     Linker::ItemList NativeLinkItems;
 
     // Add library paths to the linker
@@ -517,10 +517,10 @@
     // Optimize the module
     Optimize(Composite.get());
 
-    // Generate the bytecode for the optimized module.
-    std::string RealBytecodeOutput = OutputFilename;
-    if (!LinkAsLibrary) RealBytecodeOutput += ".bc";
-    GenerateBytecode(Composite.get(), RealBytecodeOutput);
+    // Generate the bitcode for the optimized module.
+    std::string RealBitcodeOutput = OutputFilename;
+    if (!LinkAsLibrary) RealBitcodeOutput += ".bc";
+    GenerateBitcode(Composite.get(), RealBitcodeOutput);
 
     // If we are not linking a library, generate either a native executable
     // or a JIT shell script, depending upon what the user wants.
@@ -545,17 +545,17 @@
 
           const char* args[4];
           args[0] = I->c_str();
-          args[1] = RealBytecodeOutput.c_str();
+          args[1] = RealBitcodeOutput.c_str();
           args[2] = tmp_output.c_str();
           args[3] = 0;
           if (0 == sys::Program::ExecuteAndWait(prog, args, 0,0,0,0, &ErrMsg)) {
-            if (tmp_output.isBytecodeFile() || tmp_output.isBitcodeFile()) {
-              sys::Path target(RealBytecodeOutput);
+            if (tmp_output.isBitcodeFile() || tmp_output.isBitcodeFile()) {
+              sys::Path target(RealBitcodeOutput);
               target.eraseFromDisk();
               if (tmp_output.renamePathOnDisk(target, &ErrMsg))
                 PrintAndExit(ErrMsg, 2);
             } else
-              PrintAndExit("Post-link optimization output is not bytecode");
+              PrintAndExit("Post-link optimization output is not bitcode");
           } else {
             PrintAndExit(ErrMsg);
           }
@@ -563,9 +563,9 @@
       }
 
       // If the user wants to generate a native executable, compile it from the
-      // bytecode file.
+      // bitcode file.
       //
-      // Otherwise, create a script that will run the bytecode through the JIT.
+      // Otherwise, create a script that will run the bitcode through the JIT.
       if (Native) {
         // Name of the Assembly Language output file
         sys::Path AssemblyFile ( OutputFilename);
@@ -584,9 +584,9 @@
         if (gcc.isEmpty())
           PrintAndExit("Failed to find gcc");
 
-        // Generate an assembly language file for the bytecode.
+        // Generate an assembly language file for the bitcode.
         std::string ErrMsg;
-        if (0 != GenerateAssembly(AssemblyFile.toString(), RealBytecodeOutput,
+        if (0 != GenerateAssembly(AssemblyFile.toString(), RealBitcodeOutput,
             llc, ErrMsg))
           PrintAndExit(ErrMsg);
 
@@ -613,10 +613,10 @@
         if (gcc.isEmpty())
           PrintAndExit("Failed to find gcc");
 
-        // Generate an assembly language file for the bytecode.
+        // Generate an assembly language file for the bitcode.
         std::string ErrMsg;
         if (0 != GenerateCFile(
-            CFile.toString(), RealBytecodeOutput, llc, ErrMsg))
+            CFile.toString(), RealBitcodeOutput, llc, ErrMsg))
           PrintAndExit(ErrMsg);
 
         if (0 != GenerateNative(OutputFilename, CFile.toString(), 
@@ -635,11 +635,11 @@
       if (sys::Path(OutputFilename).makeExecutableOnDisk(&ErrMsg))
         PrintAndExit(ErrMsg);
 
-      // Make the bytecode file readable and directly executable in LLEE as well
-      if (sys::Path(RealBytecodeOutput).makeExecutableOnDisk(&ErrMsg))
+      // Make the bitcode file readable and directly executable in LLEE as well
+      if (sys::Path(RealBitcodeOutput).makeExecutableOnDisk(&ErrMsg))
         PrintAndExit(ErrMsg);
 
-      if (sys::Path(RealBytecodeOutput).makeReadableOnDisk(&ErrMsg))
+      if (sys::Path(RealBitcodeOutput).makeReadableOnDisk(&ErrMsg))
         PrintAndExit(ErrMsg);
     }
   } catch (const std::string& msg) {
