Revision 0298a0427bbfe19700169c4e239a1b9e91baa410 authored by Tim Foley on 17 November 2017, 15:09:58 UTC, committed by GitHub on 17 November 2017, 15:09:58 UTC
This statement type is a bit of a hack, to support loops that *must* be unrolled.
The AST-to-AST pass handles them by cloning the AST for the loop body N times, and it was easy enough to do the same thing for the IR: emit the instructions for the body N times.
The only thing that requires a bit of care is that now we might see the same variable declarations multiple times, so we need to play it safe and overwrite existing entries in our map from declarations to their IR values.

Of course a better answer long-term would be to do the actual unrolling in the IR. This is especially true because we might some day want to support compile-time/must-unroll loops in functions, where the loop counter comes in as a parameter (but must still be compile-time-constant at every call site).
1 parent 0e3d9ba
Raw File
.gitignore
*.exe
*.pdb
.vs
*.VC.opendb
*.VC.db
*.vcxproj.user
*.sdf
bin/
intermediate/

# Files generated by test runner.
#
# Note: in some cases a `.expected` file needs to be checked in, but
# trying to exhaustively enumerate those cases is hard with the
# way the tests are currently sorted.

*.actual
*.expected
*.expected.png
*.actual.png
*.actual.txt

# Files generated by other shader compilers

*.spv
back to top