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