diff --git a/loopy/transform/instruction.py b/loopy/transform/instruction.py
index bce96e89b3477c5f746f022b90694c27d62f6835..5566077128a3f2514f2f86d04748935e7b3ff18b 100644
--- a/loopy/transform/instruction.py
+++ b/loopy/transform/instruction.py
@@ -179,7 +179,7 @@ def tag_instructions(kernel, new_tag, within=None):
     for insn in kernel.instructions:
         if within(kernel, insn):
             new_insns.append(
-                    insn.copy(tags=insn.tags + frozenset([new_tag])))
+                    insn.copy(tags=insn.tags | frozenset([new_tag])))
         else:
             new_insns.append(insn)