Eliminating common subexpression from machine code

The aim of the CSE algorithm is to eliminate common subexpressions to make machine code compact and remove unnecessary, duplicate code. Let's look at the code in the LLVM trunk to understand how it is implemented. The detailed code is in the lib/CodeGen/MachineCSE.cpp file.

How to do it…

  1. The MachineCSE class runs on a machine function, and hence it should inherit the MachineFunctionPass class. It has various members, such as TargetInstructionInfo, which is used to get information about the target instruction (used in performing CSE); TargetRegisterInfo, which is used to get information about the target register (whether it belongs to a reserved register class, or to more such similar classes; and ...

Get LLVM Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.