add comments + assertions
diff --git a/src/pass.h b/src/pass.h
index 78a4f07..1983e17 100644
--- a/src/pass.h
+++ b/src/pass.h
@@ -308,9 +308,18 @@
   void run();
 
   // Run the passes on a specific function.
+  //
+  // Only function-parallel passes should call this, as only in them is there a
+  // distinction between function code and module code. (Non-function-parallel
+  // passes simply run on the entire module, and may access/modify anything.)
   void runOnFunction(Function* func);
 
   // Run the passes on module-level code.
+  //
+  // Only function-parallel passes should call this, as with runOnFunction. Note
+  // that such passes run only on functions by default (that is, if run() is
+  // called). This method allows you to manually run on module code in the rare
+  // cases where that is necessary.
   void runOnModuleCode(Module* module);
 
   // When running a pass runner within another pass runner, this
@@ -347,7 +356,12 @@
 
   void doAdd(std::unique_ptr<Pass> pass);
 
+  // Run an arbitrary pass.
   void runPass(Pass* pass);
+
+  // Run a function-parallel pass. Such passes differentiate running on function
+  // code and module code (see notes above on runOnFunction and
+  // runOnModuleCode).
   void runPassOnFunction(Pass* pass, Function* func);
   void runPassOnModuleCode(Pass* pass, Module* module);
 
@@ -403,6 +417,10 @@
   // module state, like globals or imports. However, reading other functions'
   // contents is invalid, as function-parallel tests can be run while still
   // adding functions to the module.
+  //
+  // Function-parallel passes do not process module-level code by default as
+  // they focus on functions. However, you can call runOnModuleCode() in the
+  // rare cases where you want them to run on module-level code.
   virtual bool isFunctionParallel() { return false; }
 
   // This method is used to create instances per function for a
@@ -493,6 +511,7 @@
   }
 
   void runOnModuleCode(Module* module) override {
+    assert(isFunctionParallel());
     assert(getPassRunner());
     WalkerType::walkModuleCode(module);
   }
diff --git a/src/passes/pass.cpp b/src/passes/pass.cpp
index fb188ea..209fcf4 100644
--- a/src/passes/pass.cpp
+++ b/src/passes/pass.cpp
@@ -965,6 +965,8 @@
 }
 
 void PassRunner::runPassOnModuleCode(Pass* pass, Module* module) {
+  assert(pass->isFunctionParallel());
+
   pass->setPassRunner(this);
   pass->runOnModuleCode(module);
 }