Various levels of optimization
There are various levels of optimization, starting at 0 and going up to 3 (there is also s
for space optimization). The code gets more and more optimized as the optimization level increases. Let's try to explore the various optimization levels.
Getting ready...
Various optimization levels can be understood by running the opt command-line interface on LLVM IR. For this, an example C program can first be converted to IR using the Clang frontend.
- Open an
example.c
file and write the following code in it:$ vi example.c int main(int argc, char **argv) { int i, j, k, t = 0; for(i = 0; i < 10; i++) { for(j = 0; j < 10; j++) { for(k = 0; k < 10; k++) { t++; } } for(j = 0; j < 10; j++) { t++; } } for(i = 0; i < 20; i++) { for(j = 0; j < 20; j++) { t++; } for(j = 0; j < 20; j++) { t++; } } return t; }
- Now convert this into LLVM IR using the
clang
command, as shown...