summaryrefslogtreecommitdiff
path: root/include/llvm/Transforms/Scalar/InstructionCombining.h
blob: 0c395720e66a5366858d370f7f437934511a3851 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//===- llvm/Transforms/Scalar/InstructionCombining.h -------------*- C++ -*--=//
//
// InstructionCombining - Combine instructions to form fewer, simple
//   instructions.  This pass does not modify the CFG, and has a tendancy to
//   make instructions dead, so a subsequent DCE pass is useful.
//
// This pass combines things like:
//    %Y = add int 1, %X
//    %Z = add int 1, %Y
// into:
//    %Z = add int 2, %X
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_TRANSFORMS_SCALAR_INSTRUCTIONCOMBINING_H
#define LLVM_TRANSFORMS_SCALAR_INSTRUCTIONCOMBINING_H

#include "llvm/Pass.h"
class Instruction;

struct InstructionCombining : public MethodPass {
  static bool doit(Method *M);
  static bool CombineInstruction(Instruction *I);

  virtual bool runOnMethod(Method *M) { return doit(M); }
};

#endif