diff --git a/loopy/schedule.py b/loopy/schedule.py
index f22b95d45275d54d473a97a8f7a0dfde69555d6b..f276e2f1244b41429ff434cd7fa1ad5c32d7563a 100644
--- a/loopy/schedule.py
+++ b/loopy/schedule.py
@@ -1039,7 +1039,7 @@ def get_barrier_needing_dependency(kernel, target, source, reverse, var_kind):
     raw = tgt_read & src_write
     war = tgt_write & src_read
 
-    for var_name in raw | war:
+    for var_name in sorted(raw | war):
         return DependencyRecord(
                 source=source,
                 target=target,
@@ -1050,7 +1050,7 @@ def get_barrier_needing_dependency(kernel, target, source, reverse, var_kind):
     if source is target:
         return None
 
-    for var_name in waw:
+    for var_name in sorted(waw):
         return DependencyRecord(
                 source=source,
                 target=target,
@@ -1213,7 +1213,7 @@ def insert_barriers(kernel, schedule, reverse, kind, level=0):
 
             # (for leading (before-first-barrier) bit of loop body)
             for insn_id in insn_ids_from_schedule(subresult[:first_barrier_index]):
-                search_set = candidates
+                search_set = sorted(candidates)
 
                 for dep_src_insn_id in search_set:
                     dep = get_barrier_needing_dependency(
@@ -1252,7 +1252,7 @@ def insert_barriers(kernel, schedule, reverse, kind, level=0):
         elif isinstance(sched_item, RunInstruction):
             i += 1
 
-            search_set = candidates
+            search_set = sorted(candidates)
 
             for dep_src_insn_id in search_set:
                 dep = get_barrier_needing_dependency(
diff --git a/loopy/target/c/__init__.py b/loopy/target/c/__init__.py
index ca71c21269add662dc1ef19a4437c9f297ec6477..628e5d9ac14714f58dd6b68e3f8b605880b1f19b 100644
--- a/loopy/target/c/__init__.py
+++ b/loopy/target/c/__init__.py
@@ -102,7 +102,9 @@ class CTarget(TargetBase):
                 sub_tp, sub_decl = self.subdecl.get_decl_pair()
                 return sub_tp, ("*const restrict %s" % sub_decl)
 
-        for tv in six.itervalues(kernel.temporary_variables):
+        for tv in sorted(
+                six.itervalues(kernel.temporary_variables),
+                key=lambda tv: tv.name):
             decl_info = tv.decl_info(self, index_dtype=kernel.index_dtype)
 
             if not tv.base_storage:
@@ -166,7 +168,7 @@ class CTarget(TargetBase):
                             idi.dtype.itemsize
                             * product(si for si in idi.shape))
 
-        for bs_name, bs_sizes in six.iteritems(base_storage_sizes):
+        for bs_name, bs_sizes in sorted(six.iteritems(base_storage_sizes)):
             bs_var_decl = POD(self, np.int8, bs_name)
             if base_storage_to_is_local[bs_name]:
                 bs_var_decl = CLLocal(bs_var_decl)