diff --git a/loopy/target/c/__init__.py b/loopy/target/c/__init__.py
index 0a54ecc6ee049e0200d4d7d0b72ce0fac5a783ee..4c5d77204eeb8bbfb707e463dd3bc13635c6118d 100644
--- a/loopy/target/c/__init__.py
+++ b/loopy/target/c/__init__.py
@@ -40,7 +40,7 @@ from loopy.diagnostic import LoopyError, LoopyTypeError
 from loopy.symbolic import IdentityMapper
 from loopy.target.execution import ExecutorBase
 from loopy.translation_unit import FunctionIdT, TranslationUnit
-from loopy.types import NumpyType, LoopyType
+from loopy.types import NumpyType, LoopyType, to_loopy_type
 from loopy.typing import ExpressionT
 from loopy.kernel import LoopKernel
 from loopy.kernel.array import ArrayBase, FixedStrideArrayDimTag
@@ -1137,6 +1137,10 @@ class CFamilyASTBuilder(ASTBuilderBase[Generable]):
 
         lhs_code = ecm(insn.assignee, prec=PREC_NONE, type_context=None)
         rhs_type_context = dtype_to_type_context(kernel.target, lhs_dtype)
+
+        if isinstance(insn.assignee, p.Lookup):
+            lhs_dtype = to_loopy_type(lhs_dtype.numpy_dtype[insn.assignee.name])
+
         if lhs_atomicity is None:
             from cgen import Assign
             return Assign(