Analysis.cpp 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. //===-- Analysis.cpp ------------------------------------------------------===//
  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. #include "llvm-c/Analysis.h"
  10. #include "llvm-c/Initialization.h"
  11. #include "llvm/Analysis/Verifier.h"
  12. #include "llvm/InitializePasses.h"
  13. #include "llvm/IR/Module.h"
  14. #include "llvm/PassRegistry.h"
  15. #include <cstring>
  16. using namespace llvm;
  17. /// initializeAnalysis - Initialize all passes linked into the Analysis library.
  18. void llvm::initializeAnalysis(PassRegistry &Registry) {
  19. initializeAliasAnalysisAnalysisGroup(Registry);
  20. initializeAliasAnalysisCounterPass(Registry);
  21. initializeAAEvalPass(Registry);
  22. initializeAliasDebuggerPass(Registry);
  23. initializeAliasSetPrinterPass(Registry);
  24. initializeNoAAPass(Registry);
  25. initializeBasicAliasAnalysisPass(Registry);
  26. initializeBlockFrequencyInfoPass(Registry);
  27. initializeBranchProbabilityInfoPass(Registry);
  28. initializeCostModelAnalysisPass(Registry);
  29. initializeCFGViewerPass(Registry);
  30. initializeCFGPrinterPass(Registry);
  31. initializeCFGOnlyViewerPass(Registry);
  32. initializeCFGOnlyPrinterPass(Registry);
  33. initializeDependenceAnalysisPass(Registry);
  34. initializeDominanceFrontierPass(Registry);
  35. initializeDomViewerPass(Registry);
  36. initializeDomPrinterPass(Registry);
  37. initializeDomOnlyViewerPass(Registry);
  38. initializePostDomViewerPass(Registry);
  39. initializeDomOnlyPrinterPass(Registry);
  40. initializePostDomPrinterPass(Registry);
  41. initializePostDomOnlyViewerPass(Registry);
  42. initializePostDomOnlyPrinterPass(Registry);
  43. initializeIVUsersPass(Registry);
  44. initializeInstCountPass(Registry);
  45. initializeIntervalPartitionPass(Registry);
  46. initializeLazyValueInfoPass(Registry);
  47. initializeLibCallAliasAnalysisPass(Registry);
  48. initializeLintPass(Registry);
  49. initializeLoopInfoPass(Registry);
  50. initializeMemDepPrinterPass(Registry);
  51. initializeMemoryDependenceAnalysisPass(Registry);
  52. initializeModuleDebugInfoPrinterPass(Registry);
  53. initializePostDominatorTreePass(Registry);
  54. initializeRegionInfoPass(Registry);
  55. initializeRegionViewerPass(Registry);
  56. initializeRegionPrinterPass(Registry);
  57. initializeRegionOnlyViewerPass(Registry);
  58. initializeRegionOnlyPrinterPass(Registry);
  59. initializeScalarEvolutionPass(Registry);
  60. initializeScalarEvolutionAliasAnalysisPass(Registry);
  61. initializeTargetTransformInfoAnalysisGroup(Registry);
  62. initializeTypeBasedAliasAnalysisPass(Registry);
  63. }
  64. void LLVMInitializeAnalysis(LLVMPassRegistryRef R) {
  65. initializeAnalysis(*unwrap(R));
  66. }
  67. LLVMBool LLVMVerifyModule(LLVMModuleRef M, LLVMVerifierFailureAction Action,
  68. char **OutMessages) {
  69. std::string Messages;
  70. LLVMBool Result = verifyModule(*unwrap(M),
  71. static_cast<VerifierFailureAction>(Action),
  72. OutMessages? &Messages : 0);
  73. if (OutMessages)
  74. *OutMessages = strdup(Messages.c_str());
  75. return Result;
  76. }
  77. LLVMBool LLVMVerifyFunction(LLVMValueRef Fn, LLVMVerifierFailureAction Action) {
  78. return verifyFunction(*unwrap<Function>(Fn),
  79. static_cast<VerifierFailureAction>(Action));
  80. }
  81. void LLVMViewFunctionCFG(LLVMValueRef Fn) {
  82. Function *F = unwrap<Function>(Fn);
  83. F->viewCFG();
  84. }
  85. void LLVMViewFunctionCFGOnly(LLVMValueRef Fn) {
  86. Function *F = unwrap<Function>(Fn);
  87. F->viewCFGOnly();
  88. }