diff --git a/bin/rtree-c/ReduceC.hs b/bin/rtree-c/ReduceC.hs
index 6ba2a1058d8e77f04972fa9003926746a410731c..778e8c0ac11f79760470c4b554385d3a61ab0c6d 100644
--- a/bin/rtree-c/ReduceC.hs
+++ b/bin/rtree-c/ReduceC.hs
@@ -91,6 +91,15 @@ instance CReducible C.CDeclaration where
                 pure $ C.CDeclarationItem d Nothing Nothing
           a -> error (show a)
       pure (C.CDecl spc decl' ni)
+    C.CDecl spc@[C.CTypeSpec (C.CTypeDef i ni')] decl ni -> do
+      x <- gets (Map.lookup i)
+      case x of
+        Just (Type rst) -> do
+          decl' <- collectNonEmpty' (reduceCDeclarationItem $ identifiers rst) decl
+          pure $ C.CDecl rst decl' ni
+        Nothing -> do
+          decl' <- collectNonEmpty' (reduceCDeclarationItem $ identifiers spc) decl
+          pure $ C.CDecl spc decl' ni
     C.CDecl spc decl ni -> do
       decl' <- collectNonEmpty' (reduceCDeclarationItem $ identifiers spc) decl
       pure $ C.CDecl spc decl' ni