diff --git a/loopy/__init__.py b/loopy/__init__.py
index b50a4ecf1b610f303dbfc5569822f2aa8ae3a2a7..eb1e6b31a1907d253a8d97b621818d23d1e9b60a 100644
--- a/loopy/__init__.py
+++ b/loopy/__init__.py
@@ -487,7 +487,7 @@ def join_inames(kernel, inames, new_iname=None, tag=None, within=None):
 
 # {{{ tag inames
 
-def tag_inames(kernel, iname_to_tag, force=False):
+def tag_inames(kernel, iname_to_tag, force=False, ignore_nonexistent=False):
     from loopy.kernel.data import parse_tag
 
     iname_to_tag = dict((iname, parse_tag(tag))
@@ -499,7 +499,10 @@ def tag_inames(kernel, iname_to_tag, force=False):
     new_iname_to_tag = kernel.iname_to_tag.copy()
     for iname, new_tag in six.iteritems(iname_to_tag):
         if iname not in kernel.all_inames():
-            raise LoopyError("iname '%s' does not exist" % iname)
+            if ignore_nonexistent:
+                continue
+            else:
+                raise LoopyError("iname '%s' does not exist" % iname)
 
         old_tag = kernel.iname_to_tag.get(iname)