1cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar//===- ADCE.h - Aggressive dead code elimination --------------------------===//
2cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar//
3cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar//                     The LLVM Compiler Infrastructure
4cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar//
5cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar// This file is distributed under the University of Illinois Open Source
6cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar// License. See LICENSE.TXT for details.
7cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar//
8cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar//===----------------------------------------------------------------------===//
9cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar//
10cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar// This file provides the interface for the Aggressive Dead Code Elimination
11cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar// pass. This pass optimistically assumes that all instructions are dead until
12cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar// proven otherwise, allowing it to eliminate dead computations that other DCE
13cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar// passes do not catch, particularly involving loop computations.
14cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar//
15cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar//===----------------------------------------------------------------------===//
16cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar
17cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar#ifndef LLVM_TRANSFORMS_SCALAR_ADCE_H
18cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar#define LLVM_TRANSFORMS_SCALAR_ADCE_H
19cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar
20cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar#include "llvm/IR/Function.h"
21cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar#include "llvm/IR/PassManager.h"
22cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar
23cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainarnamespace llvm {
24cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar
25cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar/// A DCE pass that assumes instructions are dead until proven otherwise.
26cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar///
27cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar/// This pass eliminates dead code by optimistically assuming that all
28cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar/// instructions are dead until proven otherwise. This allows it to eliminate
29cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar/// dead computations that other DCE passes do not catch, particularly involving
30cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar/// loop computations.
31cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainarclass ADCEPass {
32cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainarpublic:
33cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar  static StringRef name() { return "ADCEPass"; }
34cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar  PreservedAnalyses run(Function &F);
35cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar};
36cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar}
37cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar
38cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar#endif // LLVM_TRANSFORMS_SCALAR_ADCE_H
39