diff --git a/loopy/expression.py b/loopy/expression.py
index 7cf719f8d806d0f7d2de9471d41a559643ea2f11..3194ac571b1959dca77f6451c78a29096824ed48 100644
--- a/loopy/expression.py
+++ b/loopy/expression.py
@@ -342,8 +342,10 @@ class VectorizabilityChecker(RecursiveMapper):
 
             else:
                 if self.vec_iname in get_dependencies(index[i]):
-                    raise Unvectorizable("other vectorization iname "
-                            "dependencies in subscript")
+                    raise Unvectorizable("vectorizing iname '%s' occurs in "
+                            "unvectorized subscript axis %d (1-based) of "
+                            "expression '%s'"
+                            % (self.vec_iname, i+1, expr))
                     break
 
         return bool(possible)
diff --git a/loopy/frontend/fortran/__init__.py b/loopy/frontend/fortran/__init__.py
index ed228ebc137d8727c7f90b7a5ce618a9bc70fb6c..1cd7aa6f3e4945c306442ec09f4077d65759050d 100644
--- a/loopy/frontend/fortran/__init__.py
+++ b/loopy/frontend/fortran/__init__.py
@@ -177,7 +177,6 @@ def parse_transformed_fortran(source, free_form=True, strict=True,
             transform_code,
             require_leading_newline=False,
             ignore_lines_starting_with="#")
-    print(transform_code)
 
     if transform_code_context is None:
         proc_dict = {}
diff --git a/loopy/kernel/creation.py b/loopy/kernel/creation.py
index 70f7069bcabe87422a9cfd3752fd6fbc766fd52e..7442609a2c7c79c2f3ac270564c61031ec946bc5 100644
--- a/loopy/kernel/creation.py
+++ b/loopy/kernel/creation.py
@@ -1088,7 +1088,7 @@ def make_kernel(domains, instructions, kernel_data=["..."], **kwargs):
         kernel_data = kernel_data.split(",")
 
     kernel_args = []
-    temporary_variables = {}
+    temporary_variables = kwargs.pop("temporary_variables", {}).copy()
     for dat in kernel_data:
         if dat is Ellipsis or isinstance(dat, str):
             kernel_args.append(dat)
diff --git a/loopy/kernel/data.py b/loopy/kernel/data.py
index adffe418e9e533cde8b5d274b6a82ab509fa60a2..24851690583a33cd9a4ce8bbb7fbe59ced7f4b66 100644
--- a/loopy/kernel/data.py
+++ b/loopy/kernel/data.py
@@ -372,6 +372,16 @@ class TemporaryVariable(ArrayBase):
     def __str__(self):
         return self.stringify(include_typename=False)
 
+    def update_persistent_hash(self, key_hash, key_builder):
+        """Custom hash computation function for use with
+        :class:`pytools.persistent_dict.PersistentDict`.
+        """
+
+        super(TemporaryVariable, self).update_persistent_hash(key_hash, key_builder)
+        key_builder.rec(key_hash, self.storage_shape)
+        key_builder.rec(key_hash, self.base_indices)
+        key_builder.rec(key_hash, self.is_local)
+
 # }}}
 
 
diff --git a/loopy/preprocess.py b/loopy/preprocess.py
index abd9b770ca5c449b1e774b4eccbe3bd314ff7b6a..14940b529378a2caac44c2bf9f45180f51952ebc 100644
--- a/loopy/preprocess.py
+++ b/loopy/preprocess.py
@@ -575,6 +575,9 @@ def duplicate_private_temporaries_for_ilp_and_vec(kernel):
 
             new_ilp_inames = ilp_inames - referenced_ilp_inames
 
+            if not new_ilp_inames:
+                break
+
             if tv.name in var_to_new_ilp_inames:
                 if new_ilp_inames != set(var_to_new_ilp_inames[tv.name]):
                     raise LoopyError("instruction '%s' requires adding "