ComputeMux compiler implementations are not required to support any of the following features:
Recursion
Function pointers
Dynamic allocation
All allocations shall be statically sized and occur in the prologue of a given function.
Dynamic stack sizes
With no recursion or dynamic allocation, the maximum stack size is known at compile time.
Exception-handling
Garbage collection
C runtime (CRT) support
Debug information (which is optional)
Half-precision floating-point, if unsupported
Double-precision floating-point, if unsupported
Dynamic linking (if the compiler implementation never emits external calls e.g., to LLVM’s compiler-rt)
The ability to link against a small support library including compiler-rt and functions like
memcpy
/memset
can help to simplify the compiler implementation and produce smaller code, but is not required.
A full tool-chain: custom binary formats are permitted