This makes struct returns from functions work, but breaks structs containing arrays, due to limitations in subsequent transforms in spirv-opt. This is expected to be fixed soon.
Works in conjuction with d1be754 to represent and modify a partially dereferenced multi-level flattened aggregate.