diff --git a/docs/CommandLine.html b/docs/CommandLine.html
index e9546cb..fc66091 100644
--- a/docs/CommandLine.html
+++ b/docs/CommandLine.html
@@ -607,7 +607,7 @@
 <a href="#cl::list">cl::list</a>&lt;Opts&gt; OptimizationList(<a href="#cl::desc">cl::desc</a>("<i>Available Optimizations:</i>"),
   <a href="#cl::values">cl::values</a>(
     clEnumVal(dce               , "<i>Dead Code Elimination</i>"),
-    clEnumVal(constprop         , "<i>Constant Propogation</i>"),
+    clEnumVal(constprop         , "<i>Constant Propagation</i>"),
    clEnumValN(inlining, "<i>inline</i>", "<i>Procedure Integration</i>"),
     clEnumVal(strip             , "<i>Strip Symbols</i>"),
   0));
diff --git a/docs/DSGraphStatus.html b/docs/DSGraphStatus.html
index f3d6544..098ff65 100644
--- a/docs/DSGraphStatus.html
+++ b/docs/DSGraphStatus.html
@@ -600,7 +600,7 @@
 
 Same as the <a href="#20021108">previous run</a>, but with a huge bug fix:
 before, all of the call nodes (from the local pass) were being passed up in the
-BU pass, causing graph exposions.  Now these call sites are not propogated.  The
+BU pass, causing graph exposions.  Now these call sites are not propagated.  The
 times and sized of graphs are all much smaller now.<p>
 
 <pre>
diff --git a/docs/GettingStarted.html b/docs/GettingStarted.html
index d7d47ae..1b6656d 100644
--- a/docs/GettingStarted.html
+++ b/docs/GettingStarted.html
@@ -297,7 +297,7 @@
 
       <dt><tt>llvm/lib/Transforms/</tt><dd> This directory contains the source
       code for the LLVM to LLVM program transformations, such as Aggressive Dead
-      Code Elimination, Sparse Conditional Constant Propogation, Inlining, Loop
+      Code Elimination, Sparse Conditional Constant Propagation, Inlining, Loop
       Invarient Code Motion, Dead Global Elimination, Pool Allocation, and many
       others...
 
diff --git a/include/llvm/Support/InstVisitor.h b/include/llvm/Support/InstVisitor.h
index ebb603b..7141c2f 100644
--- a/include/llvm/Support/InstVisitor.h
+++ b/include/llvm/Support/InstVisitor.h
@@ -173,7 +173,7 @@
   RetTy visitShiftInst(ShiftInst   &I)              { DELEGATE(Instruction); }
   RetTy visitVarArgInst(VarArgInst &I)              { DELEGATE(Instruction); }
 
-  // Next level propogators... if the user does not overload a specific
+  // Next level propagators... if the user does not overload a specific
   // instruction type, they can overload one of these to get the whole class
   // of instructions...
   //
diff --git a/include/llvm/Transforms/Scalar.h b/include/llvm/Transforms/Scalar.h
index e3a5e1b..b7db4a6 100644
--- a/include/llvm/Transforms/Scalar.h
+++ b/include/llvm/Transforms/Scalar.h
@@ -15,14 +15,14 @@
 
 //===----------------------------------------------------------------------===//
 //
-// Constant Propogation Pass - A worklist driven constant propogation pass
+// Constant Propagation Pass - A worklist driven constant propagation pass
 //
-Pass *createConstantPropogationPass();
+Pass *createConstantPropagationPass();
 
 
 //===----------------------------------------------------------------------===//
 //
-// Sparse Conditional Constant Propogation Pass
+// Sparse Conditional Constant Propagation Pass
 //
 Pass *createSCCPPass();
 
@@ -152,7 +152,7 @@
 //===----------------------------------------------------------------------===//
 //
 // This pass reassociates commutative expressions in an order that is designed
-// to promote better constant propogation, GCSE, LICM, PRE...
+// to promote better constant propagation, GCSE, LICM, PRE...
 //
 // For example:  4 + (x + 5)  ->  x + (4 + 5)
 //
diff --git a/include/llvm/Transforms/Utils/Local.h b/include/llvm/Transforms/Utils/Local.h
index 9d3507d..86cabec 100644
--- a/include/llvm/Transforms/Utils/Local.h
+++ b/include/llvm/Transforms/Utils/Local.h
@@ -12,13 +12,13 @@
 class Pass;
 
 //===----------------------------------------------------------------------===//
-//  Local constant propogation...
+//  Local constant propagation...
 //
 
-/// doConstantPropogation - Constant prop a specific instruction.  Returns true
-/// and potentially moves the iterator if constant propogation was performed.
+/// doConstantPropagation - Constant prop a specific instruction.  Returns true
+/// and potentially moves the iterator if constant propagation was performed.
 ///
-bool doConstantPropogation(BasicBlock::iterator &I);
+bool doConstantPropagation(BasicBlock::iterator &I);
 
 /// ConstantFoldTerminator - If a terminator instruction is predicated on a
 /// constant value, convert it into an unconditional branch to the constant
diff --git a/lib/Transforms/ExprTypeConvert.cpp b/lib/Transforms/ExprTypeConvert.cpp
index 044e1ad..f8d5d16 100644
--- a/lib/Transforms/ExprTypeConvert.cpp
+++ b/lib/Transforms/ExprTypeConvert.cpp
@@ -142,8 +142,8 @@
   ValueTypeCache::iterator CTMI = CTMap.find(V);
   if (CTMI != CTMap.end()) return CTMI->second == Ty;
 
-  // If it's a constant... all constants can be converted to a different type We
-  // just ask the constant propogator to see if it can convert the value...
+  // If it's a constant... all constants can be converted to a different type. We
+  // just ask the constant propagator to see if it can convert the value...
   //
   if (Constant *CPV = dyn_cast<Constant>(V))
     return ConstantFoldCastInstruction(CPV, Ty);
diff --git a/lib/Transforms/LevelRaise.cpp b/lib/Transforms/LevelRaise.cpp
index b678dff..9f93c27 100644
--- a/lib/Transforms/LevelRaise.cpp
+++ b/lib/Transforms/LevelRaise.cpp
@@ -557,7 +557,7 @@
   for (Function::iterator BB = F.begin(), BBE = F.end(); BB != BBE; ++BB)
     for (BasicBlock::iterator BI = BB->begin(); BI != BB->end();) {
       DEBUG(cerr << "Processing: " << *BI);
-      if (dceInstruction(BI) || doConstantPropogation(BI)) {
+      if (dceInstruction(BI) || doConstantPropagation(BI)) {
         Changed = true; 
         ++NumDCEorCP;
         DEBUG(cerr << "***\t\t^^-- Dead code eliminated!\n");
diff --git a/lib/Transforms/Scalar/ConstantProp.cpp b/lib/Transforms/Scalar/ConstantProp.cpp
index b7dde4a..4b8e951 100644
--- a/lib/Transforms/Scalar/ConstantProp.cpp
+++ b/lib/Transforms/Scalar/ConstantProp.cpp
@@ -1,6 +1,6 @@
-//===- ConstantProp.cpp - Code to perform Simple Constant Propogation -----===//
+//===- ConstantProp.cpp - Code to perform Simple Constant Propagation -----===//
 //
-// This file implements constant propogation and merging:
+// This file implements constant propagation and merging:
 //
 // Specifically, this:
 //   * Converts instructions like "add int 1, 2" into 3
@@ -23,7 +23,7 @@
 namespace {
   Statistic<> NumInstKilled("constprop", "Number of instructions killed");
 
-  struct ConstantPropogation : public FunctionPass {
+  struct ConstantPropagation : public FunctionPass {
     bool runOnFunction(Function &F);
 
     virtual void getAnalysisUsage(AnalysisUsage &AU) const {
@@ -31,15 +31,15 @@
     }
   };
 
-  RegisterOpt<ConstantPropogation> X("constprop","Simple constant propogation");
+  RegisterOpt<ConstantPropagation> X("constprop","Simple constant propagation");
 }
 
-Pass *createConstantPropogationPass() {
-  return new ConstantPropogation();
+Pass *createConstantPropagationPass() {
+  return new ConstantPropagation();
 }
 
 
-bool ConstantPropogation::runOnFunction(Function &F) {
+bool ConstantPropagation::runOnFunction(Function &F) {
   // Initialize the worklist to all of the instructions ready to process...
   std::set<Instruction*> WorkList(inst_begin(F), inst_end(F));
   bool Changed = false;
@@ -51,7 +51,7 @@
     if (!I->use_empty())                 // Don't muck with dead instructions...
       if (Constant *C = ConstantFoldInstruction(I)) {
         // Add all of the users of this instruction to the worklist, they might
-        // be constant propogatable now...
+        // be constant propagatable now...
         for (Value::use_iterator UI = I->use_begin(), UE = I->use_end();
              UI != UE; ++UI)
           WorkList.insert(cast<Instruction>(*UI));
diff --git a/lib/Transforms/Scalar/CorrelatedExprs.cpp b/lib/Transforms/Scalar/CorrelatedExprs.cpp
index c560e83..26bdfda 100644
--- a/lib/Transforms/Scalar/CorrelatedExprs.cpp
+++ b/lib/Transforms/Scalar/CorrelatedExprs.cpp
@@ -300,7 +300,7 @@
 // TransformRegion - Transform the region starting with BB according to the
 // calculated region information for the block.  Transforming the region
 // involves analyzing any information this block provides to successors,
-// propogating the information to successors, and finally transforming
+// propagating the information to successors, and finally transforming
 // successors.
 //
 // This method processes the function in depth first order, which guarantees
@@ -885,7 +885,7 @@
     return;
 
   // If we already have information that contradicts the current information we
-  // are propogating, ignore this info.  Something bad must have happened!
+  // are propagating, ignore this info.  Something bad must have happened!
   //
   if (Op1R.contradicts(Opcode, VI)) {
     Op1R.contradicts(Opcode, VI);
diff --git a/lib/Transforms/Scalar/SCCP.cpp b/lib/Transforms/Scalar/SCCP.cpp
index bddf0af..4463a7f 100644
--- a/lib/Transforms/Scalar/SCCP.cpp
+++ b/lib/Transforms/Scalar/SCCP.cpp
@@ -1,6 +1,6 @@
-//===- SCCP.cpp - Sparse Conditional Constant Propogation -----------------===//
+//===- SCCP.cpp - Sparse Conditional Constant Propagation -----------------===//
 //
-// This file implements sparse conditional constant propogation and merging:
+// This file implements sparse conditional constant propagation and merging:
 //
 // Specifically, this:
 //   * Assumes values are constant unless proven otherwise
@@ -75,7 +75,7 @@
 //===----------------------------------------------------------------------===//
 // SCCP Class
 //
-// This class does all of the work of Sparse Conditional Constant Propogation.
+// This class does all of the work of Sparse Conditional Constant Propagation.
 //
 namespace {
 class SCCP : public FunctionPass, public InstVisitor<SCCP> {
@@ -86,7 +86,7 @@
   std::vector<BasicBlock*>  BBWorkList;  // The BasicBlock work list
 public:
 
-  // runOnFunction - Run the Sparse Conditional Constant Propogation algorithm,
+  // runOnFunction - Run the Sparse Conditional Constant Propagation algorithm,
   // and return true if the function was modified.
   //
   bool runOnFunction(Function &F);
@@ -239,7 +239,7 @@
 // SCCP Class Implementation
 
 
-// runOnFunction() - Run the Sparse Conditional Constant Propogation algorithm,
+// runOnFunction() - Run the Sparse Conditional Constant Propagation algorithm,
 // and return true if the function was modified.
 //
 bool SCCP::runOnFunction(Function &F) {
diff --git a/lib/Transforms/Utils/Local.cpp b/lib/Transforms/Utils/Local.cpp
index 8f67e11..0d15ab5 100644
--- a/lib/Transforms/Utils/Local.cpp
+++ b/lib/Transforms/Utils/Local.cpp
@@ -10,13 +10,13 @@
 #include "llvm/ConstantHandling.h"
 
 //===----------------------------------------------------------------------===//
-//  Local constant propogation...
+//  Local constant propagation...
 //
 
 // ConstantFoldInstruction - If an instruction references constants, try to fold
 // them together...
 //
-bool doConstantPropogation(BasicBlock::iterator &II) {
+bool doConstantPropagation(BasicBlock::iterator &II) {
   if (Constant *C = ConstantFoldInstruction(II)) {
     // Replaces all of the uses of a variable with uses of the constant.
     II->replaceAllUsesWith(C);
