- Binary operations: +, -, *, /, >, <, ==
- Unary operations: +, -
- Brackets (overwriting order of operations)
- Supported data types: char, int, float and pointers (e.g. float**)
- Special reserved words: const, if, else, while, for, break, continue, return and void
- Variables
6.0. Local and global variables
6.1. Declaration
6.2. Definition
6.3. Assignments
6.4. Identifiers appearing in expressions 7.Pointer operations: *, & - Comments: single-line, multi-line
- Printf and Scanf functions
- Scoping
- Functions
11.1. Passing parameters by value and by reference (pointers) - Optimizations: unreachable and dead code not implemented
- Arrays
- Import <stdio.h> (printf, scanf)
- Constant folding
- Constant propagation: works with the reaching definition principle
- Modulo operation: %
- Comparison operations: <=, >=, !=
- Identifier operations: ++, --
- (Multiple variable declaration and/or initializations in one line, see benchmark prime.c for example)
- Efficient register retrieval
7.1. Depending on register and address descriptors
7.2. Storing and loading only registers that are used in function
Lots of bug fixes and improvements. Benchmark now running as it should.
Features that were not yet implemented:
- Arrays and Global variables added
- Scanf