AutoUpgrade.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. //===- AutoUpgrade.h - AutoUpgrade Helpers ----------------------*- 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. //
  10. // These functions are implemented by lib/IR/AutoUpgrade.cpp.
  11. //
  12. //===----------------------------------------------------------------------===//
  13. #ifndef LLVM_IR_AUTOUPGRADE_H
  14. #define LLVM_IR_AUTOUPGRADE_H
  15. #include <string>
  16. namespace llvm {
  17. class CallInst;
  18. class Constant;
  19. class Function;
  20. class Instruction;
  21. class Module;
  22. class GlobalVariable;
  23. class Type;
  24. class Value;
  25. /// This is a more granular function that simply checks an intrinsic function
  26. /// for upgrading, and returns true if it requires upgrading. It may return
  27. /// null in NewFn if the all calls to the original intrinsic function
  28. /// should be transformed to non-function-call instructions.
  29. bool UpgradeIntrinsicFunction(Function *F, Function *&NewFn);
  30. /// This is the complement to the above, replacing a specific call to an
  31. /// intrinsic function with a call to the specified new function.
  32. void UpgradeIntrinsicCall(CallInst *CI, Function *NewFn);
  33. /// This is an auto-upgrade hook for any old intrinsic function syntaxes
  34. /// which need to have both the function updated as well as all calls updated
  35. /// to the new function. This should only be run in a post-processing fashion
  36. /// so that it can update all calls to the old function.
  37. void UpgradeCallsToIntrinsic(Function* F);
  38. /// This checks for global variables which should be upgraded. It returns true
  39. /// if it requires upgrading.
  40. bool UpgradeGlobalVariable(GlobalVariable *GV);
  41. /// If the TBAA tag for the given instruction uses the scalar TBAA format,
  42. /// we upgrade it to the struct-path aware TBAA format.
  43. void UpgradeInstWithTBAATag(Instruction *I);
  44. /// This is an auto-upgrade for bitcast between pointers with different
  45. /// address spaces: the instruction is replaced by a pair ptrtoint+inttoptr.
  46. Instruction *UpgradeBitCastInst(unsigned Opc, Value *V, Type *DestTy,
  47. Instruction *&Temp);
  48. /// This is an auto-upgrade for bitcast constant expression between pointers
  49. /// with different address spaces: the instruction is replaced by a pair
  50. /// ptrtoint+inttoptr.
  51. Value *UpgradeBitCastExpr(unsigned Opc, Constant *C, Type *DestTy);
  52. /// Check the debug info version number, if it is out-dated, drop the debug
  53. /// info. Return true if module is modified.
  54. bool UpgradeDebugInfo(Module &M);
  55. /// Upgrade a metadata string constant in place.
  56. void UpgradeMDStringConstant(std::string &String);
  57. } // End llvm namespace
  58. #endif