diff --git a/loopy/target/cuda.py b/loopy/target/cuda.py
index 89d090b7af0d03b6005755c68027e27795378cc8..6d3833a5cb719f8a0149f304256a738b7c1fc89a 100644
--- a/loopy/target/cuda.py
+++ b/loopy/target/cuda.py
@@ -206,7 +206,9 @@ class CudaTarget(CTarget):
                 and dtype.numpy_dtype in list(vec.types.values()))
 
     def vector_dtype(self, base, count):
-        return NumpyType(vec.types[base.numpy_dtype, count])
+        return NumpyType(
+                vec.types[base.numpy_dtype, count],
+                target=self)
 
     # }}}
 
diff --git a/loopy/target/opencl.py b/loopy/target/opencl.py
index 70bce2331098860ada34c3fc4d865f3ba9207bc1..e9054470fd13b44ab1d8c41b66d70231788e1ed8 100644
--- a/loopy/target/opencl.py
+++ b/loopy/target/opencl.py
@@ -293,7 +293,9 @@ class OpenCLTarget(CTarget):
                 and dtype.numpy_dtype in list(vec.types.values()))
 
     def vector_dtype(self, base, count):
-        return NumpyType(vec.types[base.numpy_dtype, count])
+        return NumpyType(
+                vec.types[base.numpy_dtype, count],
+                target=self)
 
     # }}}
 
diff --git a/loopy/target/pyopencl.py b/loopy/target/pyopencl.py
index add5bd9e235289350cf53af5b3a9a07049df053f..aea2473972c9f0cc4144e17e1943bf9008cb4f18 100644
--- a/loopy/target/pyopencl.py
+++ b/loopy/target/pyopencl.py
@@ -307,7 +307,9 @@ class PyOpenCLTarget(OpenCLTarget):
 
     def vector_dtype(self, base, count):
         from pyopencl.array import vec
-        return NumpyType(vec.types[base.numpy_dtype, count])
+        return NumpyType(
+                vec.types[base.numpy_dtype, count],
+                target=self)
 
     def alignment_requirement(self, type_decl):
         import struct