Book Image

LLVM Cookbook

Book Image

LLVM Cookbook

Overview of this book

Table of Contents (16 chapters)
LLVM Cookbook
Credits
About the Authors
About the Reviewers
www.PacktPub.com
Preface
Index

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.

  1. 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;
    }
  2. Now convert this into LLVM IR using the clang command, as shown here...