# Complete fn code generation
###### tags: `functional cycle 8`
appetite: 1 week (Hannes?)
## Progress
- [x] fix don't inline into closure
- [x] CUDA backend
- [x] allow specification of backend
- [x] add testing
- [ ] consider generalizing dimensions for Cartesian or add check
- [ ] Temporaries
- [ ] Consume popped-up temporaries
- [ ] Generate allocation
- [ ] can_deref vs can_shift: currently a simplified transformation, generalize or restrict input?
- [ ] Scan
- [ ] Example in gtfn_ir with prologue, epilogue and projector
- [ ] adapt code generator
## Goal
Complete the code generator such that all valid Iterator IR programs can be generated and executed in the `fn` C++ backend.
## Current state
There is a prototype implementation on GitHub https://github.com/GridTools/gt4py/pull/669 which contains
- a `gtfn_ir` which is a variant if iterator IR
- a code generator with limitations
- testing with driver code in C++
## Steps
- Cleanup and merge the current supported patterns
- Expand `gtfn_ir` and generator to support scans (starting from a gtfn_ir program to decouple from the Scan project).