/3rd_party/llvm/include/llvm/CodeGen/ProcessImplicitDefs.h

https://code.google.com/p/softart/ · C++ Header · 51 lines · 28 code · 13 blank · 10 comment · 0 complexity · 7101af4212372b4cf4270e0ed9637f0d MD5 · raw file

  1. //===-------------- llvm/CodeGen/ProcessImplicitDefs.h ----------*- C++ -*-===//
  2. //
  3. // The LLVM Compiler Infrastructure
  4. //
  5. // This file is distributed under the University of Illinois Open Source
  6. // License. See LICENSE.TXT for details.
  7. //
  8. //===----------------------------------------------------------------------===//
  9. #ifndef LLVM_CODEGEN_PROCESSIMPLICITDEFS_H
  10. #define LLVM_CODEGEN_PROCESSIMPLICITDEFS_H
  11. #include "llvm/CodeGen/MachineFunctionPass.h"
  12. #include "llvm/ADT/SmallSet.h"
  13. namespace llvm {
  14. class MachineInstr;
  15. class TargetInstrInfo;
  16. class TargetRegisterInfo;
  17. class MachineRegisterInfo;
  18. class LiveVariables;
  19. /// Process IMPLICIT_DEF instructions and make sure there is one implicit_def
  20. /// for each use. Add isUndef marker to implicit_def defs and their uses.
  21. class ProcessImplicitDefs : public MachineFunctionPass {
  22. const TargetInstrInfo *TII;
  23. const TargetRegisterInfo *TRI;
  24. MachineRegisterInfo *MRI;
  25. LiveVariables *LV;
  26. bool CanTurnIntoImplicitDef(MachineInstr *MI, unsigned Reg,
  27. unsigned OpIdx,
  28. SmallSet<unsigned, 8> &ImpDefRegs);
  29. public:
  30. static char ID;
  31. ProcessImplicitDefs() : MachineFunctionPass(ID) {
  32. initializeProcessImplicitDefsPass(*PassRegistry::getPassRegistry());
  33. }
  34. virtual void getAnalysisUsage(AnalysisUsage &au) const;
  35. virtual bool runOnMachineFunction(MachineFunction &fn);
  36. };
  37. }
  38. #endif // LLVM_CODEGEN_PROCESSIMPLICITDEFS_H