Contributor
Shinji Okumura

Improve inter-procedural analyses and optimizations


Mentors
Johannes Doerfert, Brian Homerding
Organization
The LLVM Compiler Infrastructure

LLVM IR has some attributes which can be attached to function, argument, callsite, et cetera. These attributes guarantee a property corresponding to each attribute and its position, and such information is used to decide to apply a particular transformation in other optimization passes. These attributes are given by the frontend or inferred by LLVM passes.

A framework for unified attribute inference named “Attributor” was introduced and implemented. In a GSoC project last year, various attributes can be inferred with Attributor. However, there is room for improvement of inference.

The Attributor can not only deduce attributes but also connect attribute deduction and other analyses to each other. We can take advantage of this potential of Attributor. One of such optimizations is “value simplification”. It has been implemented, but it also can be improved.

The purpose of this project is two-fold.

  1. To make some inference stronger and make it possible for more optimizations to be applied.
  2. To improve value simplification from various perspectives.